我知道 URI 支持以下语法:
http://[user]:[password]@[domain.tld]
没有密码或密码为空时,是否有冒号?
换句话说,我应该接受这个吗:
http://[user]:@[domain.tld]
或者这个:
http://[user]@[domain.tld]
或者它们都有效?
最佳答案
当前的 URI 标准 ( STD 66 ) 是 RFC 3986,相关部分是 3.2.1. User Information .
那里定义了 userinfo 子组件(后面跟着 @
)可以包含以下内容的任意组合
- 字符
:
, - 百分比编码的字符,以及
- 字符集unreserved 和sub-delims。
所以这意味着您的两个示例都是有效的。
但是,请注意 user:password
格式已弃用。无论如何,他们给出了应用程序应如何处理此类 URI 的建议,即第一个 :
字符之后的所有内容不应由应用程序显示,除非
the data after the colon is the empty string (indicating no password).
所以根据这个推荐,userinfo子组件user:
表示有用户名“user”,没有密码。
关于http - 没有密码的 URI 中的用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336874/