在URL的片段标识符中如何编码空格

6
在 URL 中的片段标识符中,空格应该被编码为像路径中的 %20 还是像查询字符串中的 +
1个回答

6
对于HTML页面,它们应该进行百分号编码。
根据RFC 2396RFC 3986RFC 7320,片段标识符的格式取决于媒体类型。来自RFC 2396和RFC 3986:
“片段标识符的语义由可能从主资源检索操作中产生的表示集定义。因此,片段的格式和分辨率取决于可能被检索的表示的媒体类型[RFC2046],即使仅在解除引用URI时才执行此类检索。”
来自RFC 7320:
“媒体类型定义(根据[RFC6838])应指定要与它们一起使用的片段标识符语法。除非它们明确为媒体类型定义的重复使用定义了一个结构,否则其他规范不得在片段标识符内定义结构。”

HTML5规范仅指定百分数编码

文档的指定部分是片段标识符(如果有)所标识的部分。将片段标识符映射到特定DOM节点的语义由定义文档使用的MIME类型的规范定义(例如,XML MIME类型的片段标识符处理由RFC7303负责)。

对于HTML文档(和HTML MIME类型),必须遵循以下处理模型以确定文档的指定部分。

  1. 对URL应用URL解析器算法,并让fragid成为解析后URL的片段组件。
  1. 如果fragid为空字符串,则文档的指定部分为文档的顶部;在此处停止算法。
  1. 让fragid字节成为百分数解码的结果。
  1. 将fragid字节应用UTF-8解码算法后得到解码的fragid结果。如果UTF-8解码器发出解码器错误,则中止解码器并跳转到标记为“无解码fragid”的步骤。
  2. [...]

(强调我)

对于XML文档,RFC 7303指定了XPointer Framework的语法,该语法还要求对保留的URI字符进行百分比编码

其他媒体类型可能有不同的规则。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接