Http 哪个部分忽略了url中的哈希片段,或者为什么爬虫程序不简单地发送该片段?

Http 哪个部分忽略了url中的哈希片段,或者为什么爬虫程序不简单地发送该片段?,http,fragment,Http,Fragment,前几天我被问到一个简单的问题,我很惊讶我不知道答案,也无法在网上轻松找到答案 我知道URL中的片段不会到达后端。但我不清楚是谁在URL到达后端之前将该部分从URL中剥离 我希望我的问题非常清楚,因为我正在寻找一个非常清楚的答案: 客户端在检索文档时不应向服务器发送URI片段 由此我了解到浏览器删除了片段,curl删除了片段,wget等等 另一方面,爬虫程序在识别#时存在整个SEO问题组合,然后他们将其转换为\u转义\u片段-,但这是我没有得到的-为什么爬虫不简单地发送片段??为什么要这么麻烦?

前几天我被问到一个简单的问题,我很惊讶我不知道答案,也无法在网上轻松找到答案

我知道URL中的片段不会到达后端。但我不清楚是谁在URL到达后端之前将该部分从URL中剥离

我希望我的问题非常清楚,因为我正在寻找一个非常清楚的答案:

客户端在检索文档时不应向服务器发送URI片段

由此我了解到浏览器删除了片段,
curl
删除了片段,
wget
等等

另一方面,爬虫程序在识别
#时存在整个SEO问题组合,然后他们将其转换为
\u转义\u片段
-,但这是我没有得到的-为什么爬虫不简单地发送片段??为什么要这么麻烦?如果一些客户确实发送了片段,生活会不会更轻松

我只能假设服务器(nginx、apachehttp、node-http、rails等应用服务器)剥离了该片段,但我不理解其背后的动机,为什么要这样做

有人能给我解释一下吗

我知道URL中的片段不会到达后端。但我不清楚是谁在URL到达后端之前将该部分从URL中剥离

显然,这正是各州……每个人(浏览器供应商)“应该”遵守的规范。其背后的主要原因是披露用户个人信息的安全隐患。你可以看一下说明书,我相信你会看得更清楚。例如,在中,您可以看到与referer头相关的语句

用户代理不能包含 生成Referer字段时的URI引用[RFC3986],如果有 价值观

另一个例子是关于重定向

这可能会产生以下效果: 将一个站点的片段透露给另一个站点。如果第一个站点 以碎片形式使用个人信息时,应确保 指向其他站点的重定向包含一个(可能为空)片段 组件来阻止该继承

安全含义非常清楚,但如果您仍然不理解安全含义,至少您应该信任它并遵循规范……这就是浏览器供应商所做的(嗯,有时),他们遵循规范

关于ajax请求、爬虫程序和片段的第二个问题仍然与上述规范有关。规范规定客户端不得向服务器发送片段。什么是爬虫?请求数据的客户端,因此同样适用。所以,对于你的这个问题/陈述

如果一些客户确实发送了片段,生活会不会更轻松

答案(基于以上)是否定的,如果没有安全问题和恶意的人,生活会更容易

爬虫程序可能需要对使用片段的ajax页面进行爬网。为了能够从服务器请求内容(假定不理解片段),他们使用一个查询字符串变量(
\u escaped\u fragment\u
),但是,您的服务器需要知道如何处理该查询字符串,换句话说,您需要实现它,您需要像响应来自用户浏览器的ajax请求一样响应该请求。你可以在

如果你在理解上仍然有问题,那就问问还有什么不清楚的。但是要友善;)。。。我没有编写http 1.1规范,也不是绝对的专家