請求模塊是否會截斷標頭?
問題內容
我正在嘗試使用相當長(1017 個字符)的承載令牌向我的 API 發出 POST 請求以進行授權。
無論我嘗試什么,當我啟動請求時,我都會收到一條錯誤消息,指出位置 512 中的 (水平省略號)無法使用“latin-1”編碼進行編碼。由于我找不到我指定的標頭的任何問題(或省略號),我唯一的解釋是請求模塊在內部默默地截斷了我的令牌。難道是這樣嗎?可以禁用嗎?還有其他解決方法嗎?
正確答案不,它不會截斷標頭。您可以通過運行打印所有收到的請求的 localhost http 服務器來查看這一點。以下是使用 2000 個字符標記的示例。
# from gist.github/mdonkers/63e115cc0c79b4f6b8b3a6b797e485c7
from http.server import basehttprequesthandler, httpserver
import logging
class s(basehttprequesthandler):
def _set_response(self):
self.send_response(200)
self.send_header('content-type', 'text/html')
self.end_headers()
def do_post(self):
content_length = int(self.headers['content-length'])
post_data = self.rfile.read(content_length)
logging.info("post request,\npath: %s\nheaders:\n%s\n\nbody:\n%s\n",
str(self.path), str(self.headers), post_data.decode('utf-8'))
self._set_response()
self.wfile.write("post request for {}".format(self.path).encode('utf-8'))
def run(server_class=httpserver, handler_class=s):
logging.basicconfig(level=logging.info)
server_address = ('', 8080)
httpd = server_class(server_address, handler_class)
try:
httpd.serve_forever()
except keyboardinterrupt:
pass
httpd.server_close()
if __name__ == '__main__':
run()
在本地主機上運行它,然后使用請求來發布請求:
import requests
import random
import string
token = ''.join(random.choices(string.ascii_letters, k=2000))
requests.request('post', 'localhost:8080', headers={'token': token}, body='hello world')
產生以下輸出:
INFO:root:POST request, Path: / Headers: Host: localhost:8080 User-Agent: python-requests/2.31.0 Accept-Encoding: gzip, deflate, br Accept: */* Connection: keep-alive token: CrJlFIgJbvNdpTFPvkvCpaCPmugqMbjCUOYJaCCoibZdLfrEmLRDyxXiABGqHPTpkDYXznIWyVHwmThzBbzISh umCnRXzQveOrSCAgfYWsfNSQDKGRvsTLnwCAWuVofumJPIhJQgQibpVJPQzqjncqjDbbHVjHidOJievmATjRexUPtVtke zuMaifyNkPiMPJwwoofurbMJyueoKKdnDuTUxhTrryuuMSUYhoRjVIvtxtBdpIBjvrRcDFbLZtQXSBwcqpuSRWfnNMjll xebGylOpGEqsfQJtfzkUbtJgbSvzuolDcyXvVjVTqnFakPPGRojYVBioUsllKABIjqzzZblTncrxKYjPSTgzoBIPnjcIn WYWBsKXkRoRZbVFJnaEERnXjNTMkqGfqMDuADdGXUASRTOUsSDNcpRUzMwwWVhjQEWIpqtrDrxazIkvcoGwERSFDyUgGZ FtAiWTkiBiwKmcFbwYkZXIJBWGvXJAVylHvMcYrgyVYycbbwabTRAbviddMQCopTZLgbriyZTMvepQOWabQaVdMRGeeZU zOrLXiqjnulhyNWQOkOgTVVZCNTavrVnJJtBGPMDqzDvcenXziMRIQeXmvyuenZnTDgTSWSAMMPEPwHYPHKzbjLQspeeY SETSPfgCfoGWattjpnghHJgvarBSLkwwLYfgZhjejobPXRiVZLdzIXhjXSsomeEwAsIUOgcuKBNIOuyZGZVGTeqYMhoSR JHtfnLWJQIgyDbppALRMmZtAIrerBgNMeDueanSZmogaRNsrQVjIlWnSjqAjEWRtkdmRXoIQWkAYZniMjXOAfBDnQnUoW uEFQRvbDxCFlwdBnjJDFYaWhHLPYDzLzZOfZtJqVEucAujDXBQhTtXXgnhSHrnCGuWsTzTDUzmKbIDaYdPTmVMDArvufd fKXLUbriqvrJBMVoTXltcnCpqEELnnYKfgDfWgLCDHRaqJlkiZYUIANHsIrZxhFEJTpsCCwOMwaqjNQtgDDWfWseOgnwc LUfGzQUKyayNdkwXEOCNsWoDfHGEfNatWvdNeiMTlXiztljvmXLDgJqzIwlqnkXmnVkPtsUJiJbieDYYDALTLNQNHbQjx uiquCHQscKViGcAgVCJZqoZFhzDtuDRewTYHomvpttxoTTRePRxYoGFDIRUBcTlLhJnouqNjQgZDaPdvyWSLIxddmYYNU bKoKVWNwfYQsFQgoVsSFSboBgIvJjkxMnifwdDqkNJAcZxQYcwhUUbDwCyYbMSNmpGYaJlxeNUlcrLWXSrzAtAfblXtnC UzpnOJVYIsGONvdZyJIDwGdbaXsGZtILdPFTanTIhkoPUzDCjdaEslDXCqcaCwjIUKJMEiileCiIGASLyFYFLkKBHepbn dgmzeJQqEKycchmquNLGoVTJRPPwFBBRyzoEXylieyAUihLHHulYFJIWKXayiwkqIWjPKxmHaHUWanrzMbiHaMYdubXxk YAANJbNKvIWjZhheFMSOeIPogikXHTspixWKdFTZWWOKqsahTkFKJzrmUtBtqoYlXSjBErsbkbzJOtuXAeXHbKZsekmmU ohgOAdwaTVJgQLsYRIzIHnhErjKYEViADXfdXncenufRJDmAkEcjpqpxmFKdQmtqKwlUskVtgBAeVwnOTxdUnucxOcdyD uHoWAntZculQybCDYDEuqnzzjRklcGgAsNkyogLeZCRDSNWhQJCEQoiSChtAFWpmmzAjlhEDOnTzJyIUCzdbbPjhuDynk AuCggemjZIuisiVqgtJirqrbQeFlWckKVWsjIURcpeyGhQXzcQBQraqMJgBUafQyJiCcOefBrvwJOqyARmUZnunpwkBlD ytgwnwbBhdTUfyfUYeJjbDMDKiIYSOcyosmZvINlUYUuPhkkyojtYOzYtSFCdwTwxFJcqCDOTxyalYkvNYDvuaQKFwWIQ fkQAXiaoDQYREuhyntQBDCJohSqcdjZntuwgOVCvOPyJYMSNzksVDx Content-Length: 11 Body: hello world
下一篇:如何安全地存儲數據庫連接詳細信息
相關推薦
-
連接字符串導致問題
問題內容我在 python 中遇到了一些與連接字符串相關的奇怪問題。我們有一個需求,需要通過api連接到外部數據源并提取數據。通過 api 連接時,我們需要以字符串形式將各種憑據作為 raw_data
-
使用Python字符串切片技巧,輕松解決文本處理難題
掌握Python字符串切片,輕松解決文本處理難題在日常的文本處理工作中,經常會遇到需要對字符串進行處理的情況。Python作為一門功能強大的編程語言,提供了很多方便靈活的方法來處理字符串。其中,字符串
-
Python字符串操作:簡單高效的文本處理方法
Python字符串切片:簡單易用的文本處理技巧引言在Python中,字符串是一種非常常見和重要的數據類型。在文本處理中,我們經常需要對字符串進行一些操作,如提取特定的子串、拼接多個字符串、替換字符串中
-
提高文本處理效率的Python字符串切片技巧解密
解密Python字符串切片技巧,提升文本處理效率概述:在日常的文本處理中,字符串的切片操作是經常使用的技巧之一。Python作為一門強大而受歡迎的編程語言,提供了許多簡潔高效的切片操作方法,可以大大提
-
探索Python字符串切片之旅:從初學到專家
從入門到精通:探索Python字符串切片的奇妙世界Python是一門功能強大且易于學習的編程語言。其中一個強大的特性就是字符串切片。通過切片,我們可以輕松地在字符串中截取需要的部分,并進行各種操作。本















