通过重定向进行基本身份验证
本文关键字:身份验证 重定向 | 更新日期: 2023-09-27 18:32:19
我有一个需要基本身份验证标头的 Web 服务。但是,当我使用
var header = "Authorization: Basic " +
CreateBasicHttpAuthenticationHeader(login, password);
webRequest.Headers.Add(header);
var webResponse = (HttpWebResponse)webRequest.GetResponse();
它返回 303 - 请参阅其他:
POST https://myservice/rates HTTP/1.1
Authorization: Basic QXZ...NjY=
Content-Type: application/x-content
X-API-Version: 1.1
If-Unmodified-Since: Mon, 23 Sep 2013 08:32:27 GMT
User-Agent: UserAgent
响应:
HTTP/1.1 303 See Other
Date: Mon, 23 Sep 2013 08:30:57 GMT
X-Opaque-ID: q8nxxxxc
Location: https://myservice/rates
Content-Length: 0
然后,.Net 会自动向新位置发送 GET 请求:
GET https://myservice/rates HTTP/1.1
Content-Type: application/x-content
X-API-Version: 1.1
If-Unmodified-Since: Mon, 23 Sep 2013 08:32:27 GMT
User-Agent: UserAgent
但这次不发送授权标头。您知道一种方法可以告诉它在所有呼叫中发送所有标头吗?我应该告诉它不要遵循内容吗?
您必须停用 HttpRequest 的 AllowRedirect
属性。
然后,您必须使用基本的身份验证标头构建自己的重定向系统。
这并不好,但除此之外,.Net 框架会在重定向时删除您的标头。