2013-09-23 63 views
2

我有一个需要基本身份验证标头的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 

净,然后自动发送一个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 

但是此次不会发送授权标题。你知道一种方法来告诉它发送所有呼叫的所有标题吗?我应该告诉它不要遵循内容?

回答

2

您必须停用HttpRequest的AllowRedirect属性。

然后,你必须建立你自己的重定向系统与基本身份验证标题。

这并不美妙,但否则.Net框架在重定向时会丢失标题。