我正在用 python 撰寫一個 tcp web 客戶端和 web 服務器(我是 python 和套接字/網路的新手)。一切正常,但我想實作 HTTP/1.1 協議而不是 HTTP/1.0,無論我做什么,我都無法得到 1.1 的回應。我讀到它需要一個主機欄位,但也許我做錯了什么。
這是我的 GET 請求
request = "GET " path " HTTP/1.1" "\r\nHost: " HOST "\r\n\r\n"
這是我的回應
"b'HTTP/1.0 200 OK
我正在為我的 Web 服務器使用 BaseHTTPRequestHandler。這可能是問題嗎?
uj5u.com熱心網友回復:
你應該設定protocol_version到'HTTP/1.1'您的BaseHTTPRequestHandler實作:
protocol_version這指定了回應中使用的 HTTP 協議版本。如果設定為'HTTP/1.1',服務器將允許 HTTP 持久連接;但是,您的服務器必須在其對客戶端的所有回應中包含準確的Content-Length標頭(使用send_header())。為了向后兼容,設定默認為'HTTP/1.0'.
uj5u.com熱心網友回復:
嘗試: request = f"GET / HTTP/1.1\r\nHost: {HOST}:{PORT}\r\n\r\n".encode()
在 {HOST} 中插入主機,在 {PORT} 中插入埠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/344101.html
