【问题标题】:URL hash format, what's allowed and what's not?URL 哈希格式,什么是允许的,什么是不允许的?
【发布时间】:2011-08-17 13:38:26
【问题描述】:

我在我的富 Web 应用程序中使用基于哈希的导航。我还发现我需要创建指向单个资源实例的永久链接,但是由于我无法刷新页面,并且主页是从单个路径“/”加载的,所以我不能使用 real em> 网址。相反,我考虑使用哈希。让我举个例子,因为我知道上面的解释很烂。

所以,我将使用http://example.com/#path/to/resource/1,而不是http://example.com/path/to/resource/1

这似乎工作正常,浏览器认为 '#path/to/resource/1' 是一个哈希(我认为允许使用斜线),但我想知道 URL 哈希中允许哪些字符。是否有规范或 RFC 可供我阅读以了解浏览器在哈希方面的标准行为?

编辑:好吧,我真傻。实际上并没有检查斜杠是否在所有浏览器中都有效。 Chrome 显然不喜欢它们。仅适用于 FF。

【问题讨论】:

  • Didn't actually check if slashes worked in all browsers. Chrome obviously doesn't like them. Only works in FF. - 嗯,我在 Chrome 或任何浏览器中都没有问题。
  • @Wesley:不知道,我开始使用它们是因为 FF 3.6 同意这是一个好主意。然后我在 Chrome 中进行了测试,结果有所不同。

标签: html url browser


【解决方案1】:

查看:http://www.w3.org/Addressing/rfc1630.txthttp://www.w3.org/Addressing/URL/4_2_Fragments.html

基本上,您可以使用任何可以在 URL 中编码的内容。

注意:可能存在浏览器不一致的情况。如果你害怕它们,你可以使用序列化机制,比如将字符串转换为十六进制或其他东西(虽然会长两倍),或者使用某种类型的 id。

【讨论】:

    【解决方案2】:

    我想你可能会觉得这很有用:RFC3986

    如果您使用 PHP 生成页面路径,您还可以使用urlencode() 生成有效 URL。

    【讨论】:

    • 我用 JavaScript 做所有事情。这就是我需要哈希而不是常规 URL 的原因。
    【解决方案3】:

    This document 应该会有所帮助。允许使用斜杠,但词法分析可能因浏览器而异。

    【讨论】:

    • 是的,Chrome 绝对不认为斜线是哈希的一部分,所以我恢复为破折号。不过,感谢您的链接。
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多