Heim >Backend-Entwicklung >Python-Tutorial >Leitfaden für Python-Anforderungsheader
Bei der Interaktion mit Webservern, sei es für Web Scraping oder API-Arbeit, sind Python-Anforderungsheader ein leistungsstarkes, aber oft übersehenes Werkzeug. Diese Header kommunizieren stillschweigend und teilen dem Server mit, wer anruft, warum und in welchem Format die Daten zurückgegeben werden sollen.
In diesem Leitfaden behandeln wir alles, was Sie über das Einrichten von Headern mit der Anforderungsbibliothek von Python wissen müssen, warum die Reihenfolge der Header wichtig ist und wie das Verständnis von Headern den Erfolg Ihrer Webinteraktionen verbessern kann.
Für diejenigen, die neu in der Bibliothek sind, können Sie mit der Installation mit pip install request beginnen und dieser Anleitung folgen.
In HTTP sind Header Schlüssel-Wert-Paare, die jede Anfrage und Antwort begleiten und den Server bei der Verarbeitung der Anfrage unterstützen. Header geben Erwartungen, Formate und Berechtigungen an und spielen eine entscheidende Rolle bei der Server-Client-Kommunikation. Header können dem Server beispielsweise mitteilen, um welchen Gerätetyp es sich handelt, der die Anfrage sendet, oder ob der Client eine JSON-Antwort erwartet.
Jede Anfrage initiiert einen Dialog zwischen dem Client (wie einem Browser oder einer Anwendung) und dem Server, wobei Header als Anweisungen dienen. Zu den häufigsten Headern gehören:
Header können einfach mit der Anforderungsbibliothek von Python verwaltet werden, sodass Sie Header aus einer Antwort abrufen oder benutzerdefinierte Header festlegen können, um jede Anfrage individuell anzupassen.
Beispiel: Header mit Python-Anfragen abrufen
In Python können Anfragen zum Abrufen der Header mit „response.headers“ erfolgen.
import requests response = requests.get('https://httpbin.dev') print(response.headers) { "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Origin": "*", "Content-Security-Policy": "frame-ancestors 'self' *.httpbin.dev; font-src 'self' *.httpbin.dev; default-src 'self' *.httpbin.dev; img-src 'self' *.httpbin.dev https://cdn.scrapfly.io; media-src 'self' *.httpbin.dev; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.httpbin.dev; style-src 'self' 'unsafe-inline' *.httpbin.dev https://unpkg.com; frame-src 'self' *.httpbin.dev; worker-src 'self' *.httpbin.dev; connect-src 'self' *.httpbin.dev", "Content-Type": "text/html; charset=utf-8", "Date": "Fri, 25 Oct 2024 14:14:02 GMT", "Permissions-Policy": "fullscreen=(self), autoplay=*, geolocation=(), camera=()", "Referrer-Policy": "strict-origin-when-cross-origin", "Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload", "X-Content-Type-Options": "nosniff", "X-Xss-Protection": "1; mode=block", "Transfer-Encoding": "chunked" }
Die Ausgabe zeigt Header, die der Server zurücksendet, mit Details wie
Beispiel: Benutzerdefinierte Header festlegen
Benutzerdefinierte Header, wie das Hinzufügen eines Benutzeragenten für die Geräteemulation, können Anfragen authentischer erscheinen lassen:
import requests response = requests.get('https://httpbin.dev') print(response.headers) { "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Origin": "*", "Content-Security-Policy": "frame-ancestors 'self' *.httpbin.dev; font-src 'self' *.httpbin.dev; default-src 'self' *.httpbin.dev; img-src 'self' *.httpbin.dev https://cdn.scrapfly.io; media-src 'self' *.httpbin.dev; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.httpbin.dev; style-src 'self' 'unsafe-inline' *.httpbin.dev https://unpkg.com; frame-src 'self' *.httpbin.dev; worker-src 'self' *.httpbin.dev; connect-src 'self' *.httpbin.dev", "Content-Type": "text/html; charset=utf-8", "Date": "Fri, 25 Oct 2024 14:14:02 GMT", "Permissions-Policy": "fullscreen=(self), autoplay=*, geolocation=(), camera=()", "Referrer-Policy": "strict-origin-when-cross-origin", "Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload", "X-Content-Type-Options": "nosniff", "X-Xss-Protection": "1; mode=block", "Transfer-Encoding": "chunked" }
Dieses Setup trägt dazu bei, dass jede Anfrage wie ein Browser aussieht, wodurch die Wahrscheinlichkeit verringert wird, dass Anti-Bot-Maßnahmen ausgelöst werden. In Python-Anfragen können Sie durch das Festlegen von Headern die Interaktionen mit dem Server präzise steuern.
Eine häufige Frage bei der Arbeit mit Python-Anforderungsheadern ist, ob bei Headernamen die Groß-/Kleinschreibung beachtet wird.
Gemäß der HTTP/1.1-Spezifikation wird bei Header-Namen die Groß-/Kleinschreibung nicht beachtet, was bedeutet, dass Content-Type, Content-Type und CONTENT-TYPE alle gleichwertig sind. Es empfiehlt sich jedoch, sich an Standardnamenskonventionen wie „Content-Type“ statt an alternative Groß-/Kleinschreibung zu halten. Die Standardisierung des Formats hilft, Verwirrung zu vermeiden, insbesondere bei der Integration mit APIs oder Systemen von Drittanbietern, die Header möglicherweise unterschiedlich interpretieren.
Wenn Webserver Anfragen auswerten, können subtile Details wie eine inkonsistente Header-Schreibweise die Art eines Clients offenbaren. Viele legitime Browser und Anwendungen befolgen bestimmte Groß-/Kleinschreibungskonventionen, wie z. B. die Großschreibung von Content-Type. Bots oder Skripte befolgen diese Konventionen jedoch möglicherweise nicht einheitlich. Durch die Analyse von Anfragen mit unkonventioneller Schreibweise können Server potenzielle Bots kennzeichnen oder blockieren.
In der Praxis übernimmt die Anforderungsbibliothek von Python automatisch die Groß-/Kleinschreibung für Header, wenn Funktionen wie Python-Anforderungen zum Festlegen von Headern verwendet werden. Dies bedeutet, dass die Bibliothek den Header-Namen unabhängig davon, wie Sie ihn schreiben, in ein standardisiertes Format konvertiert und so die Kompatibilität mit dem Server gewährleistet. Beachten Sie jedoch, dass bei den Header-Namen selbst zwar die Groß-/Kleinschreibung nicht berücksichtigt wird, Header-Werte (z. B. „application/json“ in Content-Type) jedoch möglicherweise dennoch wörtlich interpretiert werden und korrekt formatiert werden sollten.
In der Anforderungsbibliothek von Python können Sie auf jeden Fall Header setzen, und die Bibliothek interpretiert sie korrekt:
headers = {'User-Agent': 'my-app/0.0.1'} response = requests.get('https://httpbin.dev/headers', headers=headers) print(response.json()) { "headers": { "Accept": ["*/*"], "Accept-Encoding": ["gzip, deflate"], "Host": ["httpbin.dev"], "User-Agent": ["my-app/0.0.1"], "X-Forwarded-For": ["45.242.24.152"], "X-Forwarded-Host": ["httpbin.dev"], "X-Forwarded-Port": ["443"], "X-Forwarded-Proto": ["https"], "X-Forwarded-Server": ["traefik-2kvlz"], "X-Real-Ip": ["45.242.24.152"] }}
Wie oben gezeigt, wurde der Inhaltstyp bei Anfragen automatisch in den Standard-Inhaltstyp konvertiert. Dies zeigt, dass die Anforderungsbibliothek von Python Header-Namen für Sie normalisiert und so die Kompatibilität mit Webservern aufrechterhält, unabhängig von der im Originalcode verwendeten Groß- und Kleinschreibung.
Bei den meisten Standard-API-Interaktionen hat die Reihenfolge der Header, die mit einem Python-Request-Header-Aufruf gesendet werden, keinen Einfluss auf die Funktionalität, da die HTTP-Spezifikation keine bestimmte Reihenfolge für Header erfordert. Beim Umgang mit fortschrittlichen Anti-Bot- und Anti-Scraping-Systemen kann die Header-Reihenfolge jedoch eine unerwartet wichtige Rolle dabei spielen, ob eine Anfrage akzeptiert oder blockiert wird.
Anti-Bot-Systeme wie Cloudflare, DataDome und PerimeterX gehen oft über die einfache Header-Verifizierung hinaus und analysieren den „Fingerabdruck“ einer Anfrage. Dazu gehört auch die Reihenfolge, in der Header gesendet werden. Menschliche Benutzer (über Browser) senden Header normalerweise in einer konsistenten Reihenfolge. Browseranfragen können beispielsweise häufig einer Reihenfolge wie „Benutzeragent“, „Akzeptieren“, „Akzeptanzsprache“, „Referer“ usw. folgen. Im Gegensatz dazu können Automatisierungsbibliotheken oder Scraper Header in einer anderen Reihenfolge senden oder nicht standardmäßige Header hinzufügen, die als Warnsignale für Erkennungsalgorithmen dienen können.
Beispiel: Browser-Header vs. Python-Anfrage-Header
In einem Browser sehen Sie möglicherweise Header in dieser Reihenfolge:
import requests response = requests.get('https://httpbin.dev') print(response.headers) { "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Origin": "*", "Content-Security-Policy": "frame-ancestors 'self' *.httpbin.dev; font-src 'self' *.httpbin.dev; default-src 'self' *.httpbin.dev; img-src 'self' *.httpbin.dev https://cdn.scrapfly.io; media-src 'self' *.httpbin.dev; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.httpbin.dev; style-src 'self' 'unsafe-inline' *.httpbin.dev https://unpkg.com; frame-src 'self' *.httpbin.dev; worker-src 'self' *.httpbin.dev; connect-src 'self' *.httpbin.dev", "Content-Type": "text/html; charset=utf-8", "Date": "Fri, 25 Oct 2024 14:14:02 GMT", "Permissions-Policy": "fullscreen=(self), autoplay=*, geolocation=(), camera=()", "Referrer-Policy": "strict-origin-when-cross-origin", "Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload", "X-Content-Type-Options": "nosniff", "X-Xss-Protection": "1; mode=block", "Transfer-Encoding": "chunked" }
Mit der Anforderungsbibliothek von Python sehen Header möglicherweise etwas anders aus:
headers = {'User-Agent': 'my-app/0.0.1'} response = requests.get('https://httpbin.dev/headers', headers=headers) print(response.json()) { "headers": { "Accept": ["*/*"], "Accept-Encoding": ["gzip, deflate"], "Host": ["httpbin.dev"], "User-Agent": ["my-app/0.0.1"], "X-Forwarded-For": ["45.242.24.152"], "X-Forwarded-Host": ["httpbin.dev"], "X-Forwarded-Port": ["443"], "X-Forwarded-Proto": ["https"], "X-Forwarded-Server": ["traefik-2kvlz"], "X-Real-Ip": ["45.242.24.152"] }}
Dieser geringfügige Unterschied in der Header-Reihenfolge kann für Anti-Bot-Systeme darauf hindeuten, dass die Anfrage möglicherweise automatisiert ist, insbesondere in Kombination mit anderen Signalen, wie dem User-Agent-Format oder fehlenden Headern.
Durch die Analyse dieser Reihenfolge können fortschrittliche Erkennungssysteme Muster identifizieren, die häufig mit automatisierten Skripten oder Bots in Zusammenhang stehen. Wenn eine Anfrage nicht mit der üblichen Reihenfolge übereinstimmt, geht der Server möglicherweise davon aus, dass sie von einem Bot kommt, was möglicherweise zu blockierten Anfragen oder Captcha-Herausforderungen führt.
Beim Einrichten von Python-Anfrageheadern zur Nachahmung von Browseranfragen ist es hilfreich zu wissen, welche Header in den meisten Webbrowsern Standard sind. Diese Header informieren den Server über die Fähigkeiten und Präferenzen des Clients und lassen die Anfrage legitimer erscheinen.
Standardheader ahmen das Browserverhalten nach und erhöhen so den Erfolg von Anfragen. Zu den wichtigsten Headern gehören:
Um sicherzustellen, dass Anfragen echte Browser nachahmen:
Browser-Entwicklertools :
Proxy-Tools :
Beispiel: Nachahmung von Headern in Python
import requests response = requests.get('https://httpbin.dev') print(response.headers) { "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Origin": "*", "Content-Security-Policy": "frame-ancestors 'self' *.httpbin.dev; font-src 'self' *.httpbin.dev; default-src 'self' *.httpbin.dev; img-src 'self' *.httpbin.dev https://cdn.scrapfly.io; media-src 'self' *.httpbin.dev; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.httpbin.dev; style-src 'self' 'unsafe-inline' *.httpbin.dev https://unpkg.com; frame-src 'self' *.httpbin.dev; worker-src 'self' *.httpbin.dev; connect-src 'self' *.httpbin.dev", "Content-Type": "text/html; charset=utf-8", "Date": "Fri, 25 Oct 2024 14:14:02 GMT", "Permissions-Policy": "fullscreen=(self), autoplay=*, geolocation=(), camera=()", "Referrer-Policy": "strict-origin-when-cross-origin", "Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload", "X-Content-Type-Options": "nosniff", "X-Xss-Protection": "1; mode=block", "Transfer-Encoding": "chunked" }
Diese Anfrage verwendet browserähnliche Header, um die Interaktion natürlicher erscheinen zu lassen. Indem Sie die Header und die Header-Reihenfolge der Browser-Tools beobachten, können Sie diese in Python anpassen, um Ihre Anfrage so nah wie möglich an eine echte Browser-Anfrage anzupassen.
Die User-Agent-Zeichenfolge spielt eine entscheidende Rolle dabei, wie Server auf Anfragen reagieren. Es identifiziert die Anwendung, das Betriebssystem und das Gerät, das die Anfrage stellt, und ermöglicht es den Servern, ihre Antworten entsprechend anzupassen.
User-Agent-Zeichenfolgen werden normalerweise vom Browser selbst generiert und können je nach Browserversion, Betriebssystem und sogar der Hardwarekonfiguration variieren.
Weitere Informationen zum effektiven Einsatz von Benutzeragenten für Web Scraping finden Sie in unserem speziellen Artikel:
(https://scrapfly.io/blog/user-agent-header-in-web-scraping/)
Bei der Verwendung von Python-Anforderungsheadern mit POST-Anfragen spielen Header eine entscheidende Rolle dabei, wie der Server die vom Client gesendeten Daten interpretiert. POST-Anfragen werden normalerweise verwendet, um Daten an einen Server zu senden, um Ressourcen zu erstellen, zu aktualisieren oder zu ändern. Oft sind zusätzliche Header erforderlich, um die Struktur, das Format und den Zweck der Daten zu verdeutlichen.
Content-Type: Gibt das Datenformat an, z. B. application/json für JSON-Daten, application/x-www-form-urlencoded für Formularübermittlungen oder multipart/form-data für Dateien. Durch die richtige Einstellung wird sichergestellt, dass der Server Ihre Daten wie erwartet analysiert.
User-Agent: Identifiziert die Clientanwendung, die beim API-Zugriff und bei Ratenbegrenzungsrichtlinien hilft.
Autorisierung: Wird für sichere Endpunkte zur Authentifizierung von Anfragen benötigt, oft unter Verwendung von Token oder Anmeldeinformationen.
Akzeptieren: Gibt das gewünschte Antwortformat an (z. B. application/json) und hilft so bei der konsistenten Datenverarbeitung und Fehlerverarbeitung.
Beispielverwendung von Headern für POST-Anfragen
Um Daten in einem JSON-Format zu senden, legen Sie normalerweise den Content-Type-Header auf application/json fest und übergeben die Daten als JSON. Hier ist ein Beispiel mit Python-Anforderungen an Post-Header, um eine JSON-Nutzlast zu senden:
headers = {'User-Agent': 'my-app/0.0.1'} response = requests.get('https://httpbin.dev/headers', headers=headers) print(response.json()) { "headers": { "Accept": ["*/*"], "Accept-Encoding": ["gzip, deflate"], "Host": ["httpbin.dev"], "User-Agent": ["my-app/0.0.1"], "X-Forwarded-For": ["45.242.24.152"], "X-Forwarded-Host": ["httpbin.dev"], "X-Forwarded-Port": ["443"], "X-Forwarded-Proto": ["https"], "X-Forwarded-Server": ["traefik-2kvlz"], "X-Real-Ip": ["45.242.24.152"] }}
Durch die Verwendung von Post-Headern für Python-Anfragen auf diese Weise wird sichergestellt, dass der Server Ihre Daten korrekt verarbeitet und möglicherweise verhindert, dass die Anfrage blockiert wird.
Wenn ein Server Datenverkehr von echten Benutzern erwartet, sucht er möglicherweise nach bestimmten browserspezifischen Headern, die normalerweise nur von tatsächlichen Webbrowsern gesendet werden. Diese Header helfen dabei, Browser zu identifizieren und von automatisierten Skripts zu unterscheiden, was besonders wichtig ist, wenn Sie auf bestimmten Websites durch Anti-Bot-Schutzmaßnahmen navigieren. Indem Sie Python-Anfrageheader so konfigurieren, dass sie diese browserspezifischen Muster nachahmen, können Sie Ihre Anfragen menschlicher erscheinen lassen und so häufig die Chancen auf erfolgreiche Anfragen erhöhen.
DNT (Do Not Track): Informiert den Server über die Tracking-Präferenz des Benutzers (1 bedeutet „Nicht verfolgen“), wodurch die Anfrage browserähnlicher wird.
Sec-Fetch-Site: Zeigt die Ursprungsbeziehung mit Werten wie „Same-Origin“, „Cross-Site“ und „Keine“ an und hilft so, den echten Navigationskontext nachzuahmen.
Sec-Fetch-Mode: Definiert den Anforderungszweck, z. B. das Navigieren zum Laden von Seiten, wodurch es nützlich ist, typisches Browserverhalten zu reproduzieren.
Sec-Fetch-Dest: Gibt den Inhaltstyp (Dokument, Bild, Skript) an, nützlich zum Nachahmen bestimmter Ressourcenanforderungen.
Beispiel für browserspezifische Header in Python-Anfragen:
Legen Sie browserspezifische Header fest, wenn Sie Anfragen mithilfe der Anfragebibliothek in Python stellen.
import requests response = requests.get('https://httpbin.dev') print(response.headers) { "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Origin": "*", "Content-Security-Policy": "frame-ancestors 'self' *.httpbin.dev; font-src 'self' *.httpbin.dev; default-src 'self' *.httpbin.dev; img-src 'self' *.httpbin.dev https://cdn.scrapfly.io; media-src 'self' *.httpbin.dev; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.httpbin.dev; style-src 'self' 'unsafe-inline' *.httpbin.dev https://unpkg.com; frame-src 'self' *.httpbin.dev; worker-src 'self' *.httpbin.dev; connect-src 'self' *.httpbin.dev", "Content-Type": "text/html; charset=utf-8", "Date": "Fri, 25 Oct 2024 14:14:02 GMT", "Permissions-Policy": "fullscreen=(self), autoplay=*, geolocation=(), camera=()", "Referrer-Policy": "strict-origin-when-cross-origin", "Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload", "X-Content-Type-Options": "nosniff", "X-Xss-Protection": "1; mode=block", "Transfer-Encoding": "chunked" }
Durch die Einbeziehung dieser Header können Sie dafür sorgen, dass Ihre Anfrage den normalerweise von Browsern gesendeten ähnelt, wodurch die Wahrscheinlichkeit verringert wird, als Bot gekennzeichnet zu werden oder auf Zugriffsbeschränkungen zu stoßen.
Anti-Bot-Erkennung: Browserspezifische Header-Hilfeanfragen ähneln dem regulären Benutzerverkehr, was es für Anti-Bot-Systeme schwieriger macht, sie zu kennzeichnen.
Erweiterte Kompatibilität: Einige Websites bieten unterschiedliche Antworten für browserähnliche Anfragen, sodass diese Header für Websites nützlich sind, die den Nicht-Browser-Verkehr einschränken.
Anfrageauthentizität: Die Nachahmung des Browserverhaltens mit diesen Headern kann die Erfolgsquote von Anfragen erhöhen, indem die Wahrscheinlichkeit von Blockierungen verringert wird.
Bei der Arbeit mit Python-Anforderungsheadern ist es wichtig, gültige, korrekt formatierte Header zu verwenden. Viele Server überwachen eingehende Header aktiv, um ungewöhnliche oder unvollständige Anfragen zu erkennen. Anfragen mit ungültigen oder fehlenden Headern – etwa ein fehlender User-Agent, falsch eingestellter Content-Type oder widersprüchliche Header – sind häufige Anzeichen für automatisierten oder verdächtigen Datenverkehr und können zu einer sofortigen Blockierung führen.
Zum Beispiel können Header, die sich widersprechen, wie das Mischen von Accept: text/html mit Content-Type: application/json, dazu führen, dass der Server Ihre Anfrage ablehnt, da diese Kombination nicht mit dem typischen Browserverhalten übereinstimmt.
Darüber hinaus verwenden einige Websites KI-gestützte Anti-Bot-Tools, um Header zu untersuchen und Bot-ähnliche Inkonsistenzen zu lokalisieren. Das Testen von Headern auf potenzielle Probleme erfolgt am besten auf einer kontrollierten Plattform.
Diese praktischen Tipps zum Festlegen von Headern, wie der Verwendung von User-Agent, dem Anpassen des Inhaltstyps und der Vermeidung übermäßiger Header, tragen dazu bei, die Erkennung zu reduzieren und das Blockieren von Anfragen zu minimieren.
Wenn Sie diese Vorsichtsmaßnahmen beim Festlegen von Headern treffen, können Sie die Erfolgsquote Ihrer Anfragen erheblich verbessern und Ihnen dabei helfen, potenzielle Blockaden effektiv zu umgehen.
Während Anfragen eine leistungsstarke HTTP-Client-Bibliothek sind, eignen sie sich nicht besonders gut zum Scraping, da sie schwer zu skalieren und leicht zu identifizieren und zu blockieren sind.
ScrapFly bietet Web-Scraping-, Screenshot- und Extraktions-APIs für die Datenerfassung in großem Maßstab.
Zum Abschluss dieser Anleitung finden Sie hier Antworten auf einige häufig gestellte Fragen zu Python-Anforderungsheadern.
Kopfzeilen übermitteln bei jeder Anfrage zusätzliche Informationen, z. B. die Art der erwarteten Daten, Kundeninformationen und Autorisierungsdetails. Sie sind wichtig, um Präferenzen zu kommunizieren und sicherzustellen, dass Server Anfragen korrekt verarbeiten.
Header können dabei helfen, die Anti-Bot-Erkennung zu umgehen, Anfragen zu authentifizieren und das richtige Datenformat in Antworten sicherzustellen. Das Anpassen von Headern so, dass sie echten Browseranfragen ähneln, ist besonders hilfreich für das Scraping und den Zugriff auf eingeschränkte APIs.
Mit Browser-Entwicklertools können Sie die Header überprüfen, die bei jeder Anfrage an eine Website gesendet werden. Das Kopieren dieser Header in Ihre Python-Anfragen kann dazu beitragen, dass Ihre Anfrage den Browserverkehr nachahmt.
Die Arbeit mit Python-Anforderungsheadern ist sowohl für Web Scraping als auch für API-Interaktionen unerlässlich. Wenn Sie wissen, wie Header festgelegt, abgerufen und bearbeitet werden, können Sie effektivere und zuverlässigere Anfragen erstellen. Ganz gleich, ob Sie mit GET- oder POST-Anfragen zu tun haben, Browser-Header nachahmen oder versuchen, einer Erkennung zu entgehen, die Art und Weise, wie Sie mit Headern umgehen, kann über Ihren Scraping-Erfolg entscheiden.
Durch die Befolgung von Best Practices, wie z. B. die Verwendung von Standard-Headern, das Festlegen geeigneter Werte für POST-Anfragen und die Sicherstellung der Header-Reihenfolge, sind Ihre Anfragen besser für die Navigation in der komplexen Landschaft moderner Webdienste gerüstet.
Das obige ist der detaillierte Inhalt vonLeitfaden für Python-Anforderungsheader. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!