1

我正在尝试使用 httplib2 发出 http 请求:

import httplib2, time, re, urllib`
conn = httplib2.Http(".cache")


page = conn.request(u"http://www.mydomain.com/search?q=cars#p=100","GET")

响应正常,但“#p=100”没有被忽略。有谁知道如何通过 httplib2 传递这个?

谢谢

4

3 回答 3

8

URL 中的片段不会传递给服务器。

于 2010-10-29T00:42:33.053 回答
2

+1 给伊格纳西奥,因为他首先回答正确。
相关文档,来自https://www.rfc-editor.org/rfc/rfc2396#section-4.1

当使用 URI 引用对标识的资源执行检索操作时,可选的片段标识符(由交叉影线(“#”)字符与 URI 分隔)包含在检索后由用户代理解释的附加参考信息动作已成功完成。 因此,它不是 URI 的一部分,但通常与 URI 结合使用。

在上述链接的情况下,浏览器使用交叉影线后的信息作为 HTML 中特定位置的书签。

于 2010-10-29T00:52:41.990 回答
1

如果其他人偶然发现这个问题并想要答案,我从另一个Stack Overflow 问题中找到了答案:

哈希 (#) 符号后面的 URL 片段用于客户端处理,实际上并未发送到 Web 服务器。我的猜测是页面上有一些 javascript 使用 AJAX 从服务器请求正确的数据,你需要弄清楚使用什么 URL。

如果您使用 chrome,您可以查看开发人员工具的“网络”选项卡,并查看当您单击链接转到浏览器中的第二页时请求的 URL。

要获取开发者工具 在 Chrome 中按 F11(Windows) 或 Apple+Alt+i(Mac)。如果单击右下角的选项齿轮,请确保Preserve log upon navigation已选中。

于 2013-05-31T23:15:00.100 回答