【问题标题】:User info in URI without passwordURI 中没有密码的用户信息
【发布时间】:2026-01-07 15:25:02
【问题描述】:

我知道 URI 支持以下语法:

http://[user]:[password]@[domain.tld]

当没有密码或者密码为空时,是否有冒号?

换句话说,我应该接受这个:

http://[user]:@[domain.tld]

或者这个:

http://[user]@[domain.tld]

或者它们都有效?

【问题讨论】:

    标签: http url


    【解决方案1】:

    当前的 URI 标准 (STD 66) 是 RFC 3986,相关部分是 3.2.1. User Information

    这里定义了 userinfo 子组件(后面跟着@)可以包含以下任意组合

    • 角色:
    • 百分比编码的字符,以及
    • unreservedsub-delims 集中的字符。

    所以这意味着你的两个例子都是有效的。

    但是,请注意user:password 格式已弃用。无论如何,他们给出了应用程序应该如何处理此类 URI 的建议,即应用程序不应显示第一个 : 字符之后的所有内容,除非

    冒号后面的数据是空字符串(表示没有密码)。

    所以根据这个建议,userinfo子组件user:表示有用户名“user”,没有密码。

    【讨论】:

    • 感谢您提供详细信息和来源。我更改了接受的答案,因为这个更完整。
    【解决方案2】:

    这更像是方便,两者都是有效的。我会选择http://[user]@[domain.tld](并提示输入密码。)因为它简单且不含糊。在:之后,用户没有任何机会去思考是否需要添加任何东西

    【讨论】:

      最近更新 更多