Yêu cầu - Tiêu đề yêu cầu HTTP
Trong chương trước, chúng ta đã biết cách thực hiện yêu cầu và nhận phản hồi. Chương này sẽ khám phá thêm một chút về phần tiêu đề của URL. Vì vậy, chúng ta sẽ xem xét những điều sau:
- Hiểu tiêu đề yêu cầu
- Tiêu đề tùy chỉnh
- Tiêu đề phản hồi
Hiểu tiêu đề yêu cầu
Nhấn vào bất kỳ URL nào trong trình duyệt, kiểm tra nó và kiểm tra trong tab mạng công cụ dành cho nhà phát triển.
Bạn sẽ nhận được tiêu đề phản hồi, tiêu đề yêu cầu, trọng tải, v.v.
Ví dụ: hãy xem xét URL sau:
https://jsonplaceholder.typicode.com/users
Bạn có thể lấy chi tiết tiêu đề như sau:
Thí dụ
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users',
stream = True)
print(getdata.headers)
Đầu ra
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'}
Để đọc bất kỳ tiêu đề http nào, bạn có thể làm như sau:
getdata.headers["Content-Encoding"] // gzip
Tiêu đề tùy chỉnh
Bạn cũng có thể gửi tiêu đề đến URL được gọi như hình dưới đây.
Thí dụ
import requests
headers = {'x-user': 'test123'}
getdata = requests.get('https://jsonplaceholder.typicode.com/users',
headers=headers)
Các tiêu đề được truyền phải là định dạng chuỗi, bytestring hoặc Unicode. Hành vi của yêu cầu sẽ không thay đổi theo các tiêu đề tùy chỉnh được chuyển.
Tiêu đề phản hồi
Tiêu đề phản hồi trông giống như bên dưới khi bạn kiểm tra URL trong công cụ dành cho nhà phát triển trình duyệt, tab mạng -
Để lấy chi tiết của các tiêu đề từ việc sử dụng mô-đun yêu cầu. Response.headers như được hiển thị bên dưới -
Thí dụ
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.headers)
Đầu ra
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'}
Bạn có thể lấy bất kỳ tiêu đề cụ thể nào bạn muốn như sau:
print(getdata.headers["Expect-CT"])
Đầu ra
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"))
Đầu ra
max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/exp
ect-ct