重定向的基本身份验证

时间:2013-09-23 09:06:54

标签: c# redirect http-headers httpwebrequest

我有一个需要基本身份验证标头的网络服务。但是,当我使用

调用它时
   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

但这次不发送Authorization标头。你知道一种告诉它在所有电话上发送所有标题的方法吗?我应该告诉它不要遵循内容吗?

1 个答案:

答案 0 :(得分:2)

您必须停用HttpRequest的AllowRedirect属性。

然后你必须使用基本的auth标头构建自己的重定向系统。

这不是很好,但是.Net框架在重定向时会删除标题。