gpt4 book ai didi

http - 哪一部分从 url 中省略了哈希片段或者为什么爬虫不简单地发送片段?

转载 作者:可可西里 更新时间:2023-11-01 17:09:15 26 4
gpt4 key购买 nike

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

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

我希望我的问题非常明确,因为我正在寻找非常明确的答案:

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

据我所知,浏览器删除了该片段,curl 删除了该片段,wget 等。

另一方面,爬虫存在整个 SEO 问题,它们识别 #! 组合,然后将其转换为 _escaped_fragment_ - 但这是我不明白的是 - 为什么爬虫不简单地发送片段??为什么要这么麻烦呢?如果某些客户确实发送了片段,生活不会更轻松吗?

我只能假设服务器(nginx、apache http、节点 http、rails 等应用程序服务器)剥离了片段,但我不明白其背后的动机,他们为什么要这么做?

有人可以给我解释一下吗?

最佳答案

I know fragments in the URL do not reach the backend. but I am unclear about who is stripping that part from the URL before it reaches the backend.

显然,这正是 HTTP 1.1 Specification 的内容国家......每个人(浏览器供应商)“应该”遵守规范。其背后的主要原因是泄露用户个人信息的安全隐患。您可以仔细阅读规范,我敢肯定它对您来说会变得更加清晰。例如,在 closure 5.5.2 中你可以看到这个与 referer header 相关的声明...

A user agent MUST NOT include the fragment and userinfo components of theURI reference [RFC3986], if any, when generating the Referer fieldvalue.

另一个例子在closure 9.5与重定向有关...

this might have the effect ofdisclosing one site's fragment to another site. If the first siteuses personal information in fragments, it ought to ensure thatredirects to other sites include a (possibly empty) fragmentcomponent in order to block that inheritance

安全隐患非常清楚,但如果您仍然不了解安全隐患,至少您应该相信它并遵循规范......这就是浏览器供应商所做的(好吧,有时),他们遵循规范

你的第二个关于ajax请求、爬虫和片段的问题,还是和上面的规范有关。规范规定客户端不得向服务器发送片段。什么是爬虫?客户端请求数据,同理。所以,对于你的这个问题/陈述......

wouldn't life be easier if some clients DID send the fragment?

答案(基于以上)是否定的,如果没有安全问题和不怀好意的人,生活会更轻松。

爬虫可能需要爬取使用片段的 ajax 页面。为了能够从服务器(据说不理解片段)请求该内容,他们使用查询字符串变量(_escaped_fragment_),但是,您的服务器需要知道如何处理该内容查询字符串,换句话说,您需要实现它,您需要响应该请求,就像它是来自用户浏览器的 ajax 请求一样。您可以在 Google Webmaster Docs 中阅读更多相关信息

如果您仍然无法理解它,请问还不清楚的地方。但请保持友善 ;)...我没有编写 http 1.1 规范,也不是绝对的专家。

关于http - 哪一部分从 url 中省略了哈希片段或者为什么爬虫不简单地发送片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26011050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com