PHP将内容长度0返回给python';s urllib

PHP将内容长度0返回给python';s urllib,php,python,content-length,Php,Python,Content Length,我的代码使用httplib从PHP页面获取CSV数据。当我在Firefox或Chrome中打开页面时,数据显示很好。然而,当我尝试用python代码获取它时,我得到了一个内容长度为0且没有数据的头。这个页面是唯一一个这样做的页面——在同一目录的另一个页面中,python httplib抓取工作正常。有人能告诉我我做错了什么吗 代码: 响应标题: [('content-length', '0'), ('x-powered-by', 'PHP/5.1.6'), ('server', 'Apache/

我的代码使用httplib从PHP页面获取CSV数据。当我在Firefox或Chrome中打开页面时,数据显示很好。然而,当我尝试用python代码获取它时,我得到了一个内容长度为0且没有数据的头。这个页面是唯一一个这样做的页面——在同一目录的另一个页面中,python httplib抓取工作正常。有人能告诉我我做错了什么吗

代码:

响应标题:

[('content-length', '0'), ('x-powered-by', 'PHP/5.1.6'),
('server', 'Apache/2.2.3 (CentOS)'), ('connection', 'close'),
('date', 'Thu, 19 Aug 2010 21:39:44 GMT'), ('content-type', 'text/html; charset=UTF-8')]

也许PHP脚本希望看到httplib模块没有发送的一些HTTP头。例如,默认情况下,httplib似乎不发送Accept、Accept语言或用户代理头。您可能需要将其中的一个或多个添加到request()调用中。不过,这似乎确实发送了一个正确的主机头,这是我的第一个猜测。

可能是在用户代理头上进行过滤——尝试欺骗,例如你的Firefox


如果失败,您可以使用Firefox连接到本地Python服务器,以查看它发送的确切标题,然后复制这些标题。

如果看不到您正在调用的PHP脚本,就无法判断。您是否1000%确定
type
id
参数有值?很难说您的情况发生了什么,但我发现“
wget-s
”调试这类问题很有用。我的猜测是,
Accept
标题在这里是关键的,但是OP没有指定
urllib
工作的其他URL是否为CSV
text/csv
可能是一个不错的尝试。我不是-1,但你可以使用firebug查看firefox发送的标题;)此外,除了你用“可能”而不是“可能”之外,我不知道为什么这会被否决。还有其他事情要先检查。嘿,我不知道!有用。
[('content-length', '0'), ('x-powered-by', 'PHP/5.1.6'),
('server', 'Apache/2.2.3 (CentOS)'), ('connection', 'close'),
('date', 'Thu, 19 Aug 2010 21:39:44 GMT'), ('content-type', 'text/html; charset=UTF-8')]