【问题标题】:requests with Python 3.x : missing location with 302 status_code使用 Python 3.x 的请求:缺少 302 status_code 的位置
【发布时间】:2018-11-26 12:56:38
【问题描述】:

我在 Python 3 中使用请求如下:

r = requests.get(d, allow_redirects=False)

(其中d是url,即d = 'http://1490korn.com')。

我得到的是:

print(r.status_code)
302

还有:

print(r.headers)
{'Pragma': 'no-cache', 'cache-control': 'no-cache', 'Location': 
'/VaZfZ/', 'Connection': 'Close', 'Proxy-Connection': 'Close'}

为什么我获得的信息如此之少(对于我的其他网址,我获得了诸如日期之类的附加信息)。而且,特别是:为什么位置信息如此奇怪?

【问题讨论】:

  • 这不是 Python 3 或请求问题。这是服务器错误。
  • 换一种说法:您在客户端所做的任何事情都不会改变这一点。服务器坏了。
  • 谢谢。我可以问为什么反对票吗?我怎样才能改进这个问题?
  • 服务器不知道它坏了。
  • 软件并不完美。如果 HTTP 服务器大部分在工作,它可以找出内部问题并给你一个 500 错误。在这里,前面似乎有一个负载均衡器在一半时间提供无效响应。并非网络上的所有内容都能正常运行。

标签: python http-headers python-requests


【解决方案1】:

服务器刚刚坏了一半。您在客户端做的任何事情都无法解决这个问题。这不是 Python 问题,也不是 requests 问题。

当您使用curl 等基本网络工具时,有时您会看到完全相同的问题:

$ curl -D - http://1490korn.com
HTTP/1.1 302 Found
Pragma: no-cache
cache-control: no-cache
Location: /
Connection: close
Date: Mon, 26 Nov 2018 13:08:44 GMT

-D - 命令行开关告诉curl 写出它收到的标头。

这一次出现了Date 标头,而Location 路径仍然错误,但以不同的方式错误。服务器似乎遇到了一些可靠性问题,因为当您多次重复该命令时,一些响应是完整的:

$ curl -D - http://1490korn.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.2
Date: Mon, 26 Nov 2018 13:10:01 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Location: http://www.kornradio.com
Connection: Keep-Alive

这是一个有效的响应;请注意标题中的许多差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2021-08-12
    相关资源
    最近更新 更多