通过 URL 验证 HTTP 请求

Authenticating HTTP request through URL

我需要检索页面 https://server_addr:8080/v1/profile/+18017629094。身份验证凭据是 username=+18016364708password=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 本身进行身份验证?

RFC 3986 不赞成在用户信息字段中使用 "user:password" 格式。因此,一些现代浏览器不再支持 URL 基本访问凭据编码。应用程序不应将在 userinfo 子组件中找到的第一个冒号(“:”)字符之后的任何数据呈现为明文。出现在 userinfo 组件中的密码已被弃用并被视为错误或被忽略。 使用包含凭据的 HTTP 授权请求 header 来使用服务器对用户代理进行身份验证会更安全

Authorization: <type> <credentials>

例如,Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

或者,正如您已经尝试过的那样,您可以将用户凭据附加到 URL 作为查询参数,但这需要您在服务器端实现自己的用户身份验证逻辑。

由于您的用户名和密码包含 + 等保留字符,您是否尝试过 URL 在 URL 中对您的用户名和密码进行编码?

因此,在您的情况下,+18017629094 变为 %2B18017629094Wmsb7Ii00MHyqLAKlyIl+e0n 变为 Wmsb7Ii00MHyqLAKlyIl%2Be0n