【问题标题】:URL: Username with @URL:带有@的用户名
【发布时间】:2012-04-20 12:11:21
【问题描述】:

要通过 URL 发送用户名和密码,我们使用以下方案:

http://username:password@www.my_site.com

但我的用户名是my_email@gmail.com
问题是@

我该如何解决?

【问题讨论】:

  • @编码为%40
  • 你不想在你的 URL 中包含密码,因为那样你可能会不小心尝试通过 HTTP 访问 URL(你正在这样做),这意味着 50 米内使用 Wireshark 的任何人你们中有你的密码和用户名。
  • 在用户名中使用 URL 编码的问题是 HTTP 客户端必须在将用户名发送到服务器之前对其进行解码。尽管浏览器似乎可以很好地做到这一点,但许多 HTTP 客户端却没有(因此被破坏了)。考虑到 2021 年,我简直不敢相信这是多么混乱

标签: http url url-encoding


【解决方案1】:

只要做:

 http://my_email%40gmail.com:password@www.my_site.com

我很惊讶问题出在用户名@ 而不是密码 - 通常这是我在 url 权限或路径部分中获得保留字符的地方。

要解决特殊字符的一般情况:只需使用 F12 打开 chrome 控制台,然后粘贴 encodeURIComponent(str) 其中str 是您的密码(或用户名),然后使用编码结果形成 url密码。

希望这可以为您节省一些时间。

【讨论】:

    【解决方案2】:

    在您的用户名中使用 %40 而不是 @ 符号进行 url 编码。那么它应该正确地通过它。

    【讨论】:

    • 这很好用,因为 bitbucket 不再允许普通用户名,但需要 username@example.org 样式的用户名。
    【解决方案3】:

    您需要将 @ 的 URL 编码为 %40。

    【讨论】:

    • 不错。如果您的密码也包含@,这也适用,密码管理器创建的随机密码更有可能发生这种情况。
    • 我必须对所有不同于字母数字的字符执行此操作吗?例如,如果我的用户名是name.lastname@mail.com,我的密码是abc!@#,我应该使用name%2Elastname%40mail%2Ecomabc%21%40%23吗?
    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多