我需要检索页面https://server_addr:8080/v1/profile/+18017629094。身份验证凭据为用户名= +18016364708密码= Wmsb7Ii00MHyqLAKlyIl + e0n。
我尝试了https://server_addr:8080/v1/profile/+18017629094?login=+18016364708&password=Wmsb7Ii00MHyqLAKlyIl+e0n和其他一系列模式,例如https://+18017629094:Wmsb7Ii00MHyqLAKlyIl+e0n@server_addr:8080/v1/profile/+18017629094。它仍然要求提供凭据。如何通过URL本身进行身份验证?
答案 0 :(得分:3)
RFC 3986不赞成在userinfo字段中使用格式"user:password"
。因此,某些现代浏览器不再支持基本访问凭据的URL编码。应用程序不应在userinfo子组件中的第一个冒号(“:”)字符后将任何数据呈现为纯文本。不推荐使用出现在userinfo组件中的密码,该密码被视为错误或被忽略。
利用包含证书的HTTP授权请求标头来更安全地对服务器上的用户代理进行身份验证
Authorization: <type> <credentials>
例如,Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
或者,或者,正如您已经尝试过的那样,您可以将用户凭据作为查询参数附加到URL,但这将要求您在服务器端实现自己的用户身份验证逻辑。
答案 1 :(得分:2)
由于您的用户名和密码包含诸如+
之类的保留字符,您是否尝试过使用URL对用户名和密码进行编码?
因此,在您的情况下,+18017629094
变成%2B18017629094
,而Wmsb7Ii00MHyqLAKlyIl+e0n
变成Wmsb7Ii00MHyqLAKlyIl%2Be0n
。