0

Web 浏览器 URL (http/https)不能以哪些字符(如果有)结尾?

据我所知,不使用控制字符,例如

  • \0零。
  • \t标签。
  • \n新队。
  • 空间(从测试看来这是被剥离的)。

是否有此类字符的完整列表?

4

1 回答 1

2

URI 可以在以下三种情况下结束:

  • 使用路径组件(如果它没有查询/片段)

      http://example.com/
      http://example.com/path
      http://example.com/path/path
    
  • 使用查询组件(如果它没有片段)

      http://example.com/?query
      http://example.com/path?query
      http://example.com/path/path?query
    
  • 与片段组件

      http://example.com/#fragment
      http://example.com/path#fragment
      http://example.com/path/path#fragment
      http://example.com/?query#fragment
      http://example.com/path?query#fragment
      http://example.com/path/path?query#fragment
    

URI 标准对这三个组件( PathQueryFragment )的末尾没有任何限制,因此允许相同的字符出现在组件的任何其他位置:

空间(从测试看来这是被剥离的)

URI 可以在末尾有(多个)空格字符(在所有三种情况下),但它们必须是百分比编码的。无论在哪里,都不允许未编码的空格。

http://example.com/path-ending-with-four-spaces-%20%20%20%20

如果用户代理尝试将用户输入转换为有效的 URI(即,对所有不能出现在组件中的字符进行百分比编码),它可能会假设尾随空格不打算成为 URI 的一部分,并去掉他们。

制表符和换行符也是如此。如果使用百分比编码,它们可以是 URI 的一部分。

于 2018-05-14T14:00:23.647 回答