1

在当前的 HTTP 规范中,不会以任何方式将 URL 片段(包括并跟随 的 URL 部分#)发送到服务器。然而,随着 AJAX 的普及,它使用片段来维护某种形式的状态,在很多情况下,服务器在请求时了解 URL 片段是有用的。

例如,如果您访问http://facebook.com,然后单击流中的用户名,则 URL 将变为http://faceboook.com/#!/username - 允许 FB 更新您的页面而无需重新加载它所有的引导 JS 和 HTML。但是,如果您使用浏览器重新加载此内容,服务器将无法看到 URL 的“#/!username”部分,因此无法为您预呈现内容。一旦客户端 Javascript 加载并解析了片段,这将强制您的浏览器发出额外的请求。

我想知道是否有任何努力或建议来创建一个标准机制来实现这一点。

例如,可能有一个标准的 HTTP 标头,它将与 URL 片段的值一起发送 - 任何关心此类内容的服务器都可以访问它。

看起来这对于整个 Web 应用程序社区来说是一件非常有用的事情,所以我很惊讶没有听到任何提议。也许我错过了它。

4

3 回答 3

0

我发现Google提出的使 Ajax 页面可抓取的提议,但它解决了一组更受限制的用例。具体来说,它创建了一种用 URL 参数替换 URL 片段的方法,以从服务器获取与访问具有片段的等效 URL 的客户端生成的相同的 HTML 输出。但是,这样的 URL 对于实际运行 Ajax 应用程序是没有用的,因为它们每次都需要重新加载页面。

于 2011-04-21T01:53:47.607 回答
0

Webkit错误 24175 - URL 重定向丢失片段是指处理重定向 URL中可能感兴趣的片段标识符。

对 HTTP 未来版本的建议可能是向请求添加(可选)片段标头,其中包含片段标识符。

更简单的可能是允许 HTTP 请求包含片段标识符。

于 2011-05-27T23:10:20.307 回答
0

恕我直言,片段标识符确实不是存储状态的好地方,它是为其他目的而设计的。

话虽如此,http://www.jenitennison.com/blog/node/154对整个主题进行了很好的讨论。

于 2011-05-28T13:23:51.293 回答