繁体   English   中英

www.google.com 返回 HTTP 301

[英]www.google.com returns HTTP 301

我正在查看仅使用内置socket模块在 Python 中发出简单 HTTP 请求的示例

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 ( www.google.com )上使用curlwget返回200 我很难理解有什么不同。 curl / wget是否在“幕后”获得相同的301并且只是自动请求“新”资源? 如果是这样,鉴于如上所述,“新”位置与原来的位置相同,这怎么可能?

我对此感到困惑,因为“新位置”看起来与我要求的 URL 相同

它没有。 您的主机 header 说您正在访问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>.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM