Richieste: intestazioni delle richieste HTTP

Nel capitolo precedente abbiamo visto come effettuare la richiesta e ottenere la risposta. Questo capitolo esplorerà un po 'di più la sezione dell'intestazione dell'URL. Quindi, esamineremo quanto segue:

  • Comprensione delle intestazioni delle richieste
  • Intestazioni personalizzate
  • Intestazioni di risposta

Comprensione delle intestazioni delle richieste

Premi qualsiasi URL nel browser, ispezionalo e controlla nella scheda della rete dello strumento di sviluppo.

Otterrai intestazioni di risposta, intestazioni di richiesta, payload, ecc.

Ad esempio, considera il seguente URL:

https://jsonplaceholder.typicode.com/users

È possibile ottenere i dettagli dell'intestazione come segue:

Esempio

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', 
stream = True)
print(getdata.headers)

Produzione

E:\prequests>python makeRequest.py
{'Date': 'Sat, 30 Nov 2019 05:15:00 GMT', 'Content-Type': 'application/json; 
charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 
'Set-Cookie': '__cfduid=d2b84ccf43c40e18b95122b0b49f5cf091575090900; expires=Mon, 30-De
c-19 05:15:00 GMT; path=/; domain=.typicode.com; HttpOnly', 'X-Powered-By': 
'Express', 'Vary': 'Origin, Accept-Encoding', 'Access-Control-Allow-Credentials': 't
rue', 'Cache-Control': 'max-age=14400', 'Pragma': 'no-cache', 'Expires': '-1', '
X-Content-Type-Options': 'nosniff', 'Etag': 'W/"160d-1eMSsxeJRfnVLRBmYJSbCiJZ1qQ
"', 'Content-Encoding': 'gzip', 'Via': '1.1 vegur', 'CF-Cache-Status': 'HIT', 
'Age': '2271', 'Expect-CT': 'max-age=604800, 
report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '53da574f
f99fc331-SIN'}

Per leggere qualsiasi intestazione http puoi farlo come segue:

getdata.headers["Content-Encoding"] // gzip

Intestazioni personalizzate

Puoi anche inviare intestazioni all'URL chiamato come mostrato di seguito.

Esempio

import requests
headers = {'x-user': 'test123'}
getdata = requests.get('https://jsonplaceholder.typicode.com/users', 
headers=headers)

Le intestazioni passate devono essere in formato stringa, bytestring o Unicode. Il comportamento della richiesta non cambierà in base alle intestazioni personalizzate passate.

Intestazioni di risposta

Le intestazioni delle risposte appaiono come di seguito quando controlli l'URL nello strumento di sviluppo del browser, scheda di rete -

Per ottenere i dettagli delle intestazioni dal modulo delle richieste utilizzare. Response.headers sono come mostrato di seguito -

Esempio

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.headers)

Produzione

E:\prequests>python makeRequest.py
{'Date': 'Sat, 30 Nov 2019 06:08:10 GMT', 'Content-Type': 'application/json; 
charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 
'Set-Cookie': '__cfduid=de1158f1a5116f3754c2c353055694e0d1575094090; expires=Mon,
30-Dec-19 06:08:10 GMT; path=/; domain=.typicode.com; HttpOnly', 'X-Powered-By': 
'Express', 'Vary': 'Origin, Accept-Encoding', 'Access-Control-Allow-Credentials': 't
rue', 'Cache-Control': 'max-age=14400', 'Pragma': 'no-cache', 'Expires': '-1', '
X-Content-Type-Options': 'nosniff', 'Etag': 'W/"160d-1eMSsxeJRfnVLRBmYJSbCiJZ1qQ
"', 'Content-Encoding': 'gzip', 'Via': '1.1 vegur', 'CF-Cache-Status': 'HIT', 
'Age': '5461', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudf
lare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '53daa52f
3b7ec395-SIN'}

Puoi ottenere qualsiasi intestazione specifica che desideri come segue:

print(getdata.headers["Expect-CT"])

Produzione

max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/exp
ect-ct

You can also get the header details by using the get() method.

print(getdata.headers.get("Expect-CT"))

Produzione

max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/exp
ect-ct