Rumah >pembangunan bahagian belakang >Tutorial Python >Adakah modul permintaan memotong tajuk?

Adakah modul permintaan memotong tajuk?

王林
王林ke hadapan
2024-02-22 15:00:06744semak imbas

Adakah modul permintaan memotong tajuk?

Kandungan soalan

Saya cuba membuat permintaan POST ke API saya menggunakan token pembawa yang agak panjang (1017 aksara) untuk kebenaran.

Tidak kira apa yang saya cuba, apabila saya memulakan permintaan saya mendapat mesej ralat yang menyatakan bahawa u2026 (elipsis mendatar) dalam kedudukan 512 tidak boleh dikodkan menggunakan pengekodan "latin-1". Memandangkan saya tidak dapat mencari sebarang masalah dengan pengepala yang saya nyatakan (atau elips), satu-satunya penjelasan saya ialah modul permintaan memotong token saya secara senyap-senyap. Adakah begitu? Bolehkah ia dilumpuhkan? Adakah terdapat sebarang penyelesaian lain?


Jawapan betul


Tidak, ia tidak memotong pengepala. Anda boleh melihat ini dengan menjalankan pelayan http localhost yang mencetak semua permintaan yang diterima. Berikut ialah contoh menggunakan tag 2000 aksara.

# from https://gist.github.com/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()

Jalankannya pada localhost dan siarkan permintaan menggunakan permintaan:

import requests
import random
import string

token = ''.join(random.choices(string.ascii_letters, k=2000))
requests.request('post', 'http://localhost:8080', headers={'token': token}, body='hello world')

menghasilkan output berikut:

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

Atas ialah kandungan terperinci Adakah modul permintaan memotong tajuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam