我正在查看僅使用內置模塊在 Python 中發出簡單 HTTP 請求的示例:socket
import socket
target_host = "www.google.com"
target_port = 80
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host, target_port))
client.send(b"GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")
response = client.recv(4096)
client.close()
print(response)
當我運行這段代碼時,我得到一個301:
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
我對此感到困惑,因為“新位置”看起來與我請求的 URL 相同。在同一個 URL ( ) 上使用curlor會回傳一個. 我很難理解有什么不同。是否/獲得相同的“幕后”并且只是自動請求“新”資源?如果是這樣,鑒于如上所述,“新”位置與原來的位置相同,這怎么可能?wgetwww.google.com200curlwget301
uj5u.com熱心網友回復:
我對此感到困惑,因為“新位置”看起來與我請求的 URL 相同
它沒有。您的主機標頭說您正在訪問google.com,即沒有www:
client.send(b"GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")
這被重定向到www.google.com,即www:
<A HREF="http://www.google.com/">here</A>.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498114.html
