有没有建议将URL片段包含在HTTP请求中?

时间:2011-04-21 01:48:18

标签: http url http-headers fragment-identifier

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

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

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

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

Webkit Bug 24175 - URL Redirect Loses Fragment引用可能感兴趣的Handling of fragment identifiers in redirected URLs

  

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

     

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

答案 2 :(得分:0)

Imho,片段标识符确实不是存储状态的好地方,它是为其他东西设计的。

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