您可以在 URL 参数中传递 HTTP 基本身份验证的用户/密码吗?

您可以在 URL 参数中传递 HTTP 基本身份验证的用户/密码吗?

我认为这是不可能的,但我认识的一个人坚持认为这是可行的。我甚至不知道要尝试哪些参数,而且我还没有在任何地方找到这方面的记录。

我试过http://myserver.com/~user=用户名&密码=我的密码但它不起作用。

您能否确认实际上无法通过 HTTP 参数(GET 或 POST)传递用户/密码?

答案1

在标准 HTTP 身份验证中,确实无法通过查询参数传递用户名和密码。相反,您可以使用特殊的 URL 格式,如下所示:--这会在标准 HTTP“授权”标头中发送凭据。http://username:[email protected]/

可能你正在与之交谈的人正在考虑一个自定义模块或代码,用于查看查询参数并验证凭据。但这不是标准的 HTTP 身份验证,而是特定于应用程序的事情。

答案2

http://用户名:[电子邮件保护]适用于 FireFox、Chrome、Safari,但不适用于 IE。

Microsoft 知识库

答案3

不建议在 URL 中传递基本身份验证参数

有一个用于此目的的授权标头字段,请在此处检查: http 标头列表

如何使用它写在这里: 基本访问认证

您还可以看到,尽管某些浏览器仍支持它,但不建议在 URL 中添加基本授权凭据的建议解决方案。

另请阅读RFC 2617 第 4.1 章 - HTTP 身份验证有关为什么不使用基本身份验证的更多详细信息。


在查询字符串中传递身份验证参数

当使用 OAuth 或其他身份验证服务时,您通常也可以在查询字符串而不是授权标头中发送访问令牌,因此如下所示:

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

答案4

显然,可以在 GET 参数中发送任何字符串,但不建议发送登录名和密码,因为这可能会使其非常明显,特别是如果它不在 AJAX 请求中。

但是,您需要对服务器页面进行编码以提取登录名和密码,然后以所需的方式验证和使用它们。

相关内容