与网站调用相比,Python 请求提供不同的状态代码



我使用请求,某些URL给出的响应代码与浏览器中具有相同URL的调用不同。

例如:

import requests
req = requests.get('http://www.jordaaninfo.nl')
responsecode = req.status_code
# responsecode == 500

给出响应代码 500,而页面 http://www.jordaaninfo.nl 可通过 Chrome/FF/Safari 获得。

谢谢尼尔斯

在我的 Firefox 中,500 状态代码也出现在 www.jordaaninfo.nl,但页面还是会显示。这可以在Firebug的"网络"选项卡中看到。我在Linux上的Chromium浏览器得到200 OK。

问题(和解决方案)出在请求的接受语言标头中。显然,服务器在这方面有特殊需求;-)

问题和解决方案可以用wget演示:

$ wget 'http://www.jordaaninfo.nl/'
--2012-11-20 23:15:20--  http://www.jordaaninfo.nl/
Resolving www.jordaaninfo.nl... 87.250.155.10
Connecting to www.jordaaninfo.nl|87.250.155.10|:80... connected.
HTTP request sent, awaiting response... 500 Internal Server Error
2012-11-20 23:15:22 ERROR 500: Internal Server Error.
$ wget --header="Accept-Language: Accept-Language: en;q=0.8,en-us;q=0.5" 'http://www.jordaaninfo.nl/'
--2012-11-20 23:16:01--  http://www.jordaaninfo.nl/
Resolving www.jordaaninfo.nl... 87.250.155.10
Connecting to www.jordaaninfo.nl|87.250.155.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
....

我的 Firefox 中的 500 错误是由语言"nl"作为接受语言设置中的第一个条目引起的:

nl,en;q=0.8,en-us;q=0.5,fy;q=0.3 --> 500 ERROR
en,nl;q=0.8,en-us;q=0.5,fy;q=0.3 --> 200 OK

最新更新