URL 不能以字符结尾?



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

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

  • 零。
  • t选项卡。
  • n换行符。
  • 空间(从测试中似乎被剥离了(。

有此类角色的完整列表吗?

在三种情况下,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 标准对这三个组件(路径、查询、片段(的末尾没有任何限制,因此允许使用可以出现在组件中其他任何位置的相同字符:

  • 路径组件中允许的字符
  • 查询组件中允许的字符
  • 片段组件中允许的字符

空间(从测试中似乎被剥离了(

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

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

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

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

最新更新