这更多是出于好奇,因为我无法找到任何有关此现象的答案或文档,但情况如下:
有 2 个服务/应用程序,都托管在 IIS 7 上。服务 1 从外部源(浏览器、提琴手等)接收 HTTPS 请求,并验证它需要调用服务 2 的请求,因此服务 1 自己创建,通过 HTTP 对服务 2 的新的单独调用。此调用将 Authorization 标头添加到请求对象。 当服务 2 收到此调用时,身份验证标头消失了,就像被剥离了一样。因此身份验证失败,这将返回到服务 1,然后拒绝外部调用。
有没有人解释为什么这个标头以及我在测试中看到的其他一些标头无法通过 HTTP 调用完成?这是 IIS 或 ASP.NET 的行为还是什么?如果对服务 2 的调用是 HTTPS,则标头可以正常通过。我正在生成这样的请求:
string uriendpoint = "http://service.test.com/testService.svc/authtest";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriendpoint);
request.Credentials = CredentialCache.DefaultCredentials;
var authField = MD5Hash("test:test!!2013");
request.Headers.Add(HttpRequestHeader.Authorization, authField.ToString());
request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();