在当前的HTTP规范中,URL片段(包含和跟随#
的URL部分)不会以任何方式发送到服务器。然而,随着AJAX的扩散,它使用片段来维护某种形式的状态,在很多情况下,服务器在请求时知道URL片段会很有用。
例如,如果您转到http://facebook.com,然后点击流中的用户名,该网址将变为http://faceboook.com/#!/username - 以允许FB更新您的网页而无需重新加载其所有引导程序JS和HTML。但是,如果您要使用浏览器重新加载它,服务器将无法看到URL的“#/!username”部分,因此无法为您预先呈现内容。这会强制您的浏览器在客户端Javascript加载并解析片段后发出额外请求。
我想知道是否有任何努力或建议来建立实现这一目标的标准机制。
例如,可能有一个标准的HTTP标头,它将与URL片段的值一起发送 - 任何关心此类事情的服务器都可以访问它。
对于整个网络应用程序社区来说,这似乎是一件非常有用的事情,所以我很惊讶没有听到任何建议。也许我错过了它。
答案 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对整个主题进行了很好的讨论。