1

我使用请求,并且某些 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 访问。

谢谢,尼尔斯

4

1 回答 1

3

在我的 Firefox 中,www.jordaaninfo.nl 也会出现 500 状态代码,但无论如何都会显示该页面。这可以在 Firebug 的 Net 选项卡中看到。我在 Linux 上的 Chromium 浏览器获得了 200 OK。

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

问题和解决方案可以用 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' 作为 Accept-Language 设置中的第一个条目引起的:

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
于 2012-11-20T22:31:41.447 回答