【发布时间】:2014-11-18 23:02:08
【问题描述】:
我已经拖钓并尝试了所有方法,我之前已经完成了 100 次没有问题,但现在我被难住了。
我只是想从网络请求中传递标头信息。
客户端单独运行并连接到 wcf 休息服务。该服务有这个被命中的代码:
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Authorization, Origin, Content-Type, Accept, X-Requested-With");
客户有这个:
var client = WebRequest.Create(url);
client.Method = type.ToString().ToUpper();
client.ContentType = "application/json";
client.ContentLength = bytes.Length;
client.Headers.Add(String.Format("Authorization: {0}", "test12345"));
我也试过例如:
client.Headers["X-Requested-With"] = "test1234";
client.Headers["Authorization"] = "test1234";
无论我如何尝试设置标题,它们都不会通过。当我在提琴手中查看请求时,授权永远不存在。我也尝试过发送 X-Requested-With 等...但无论什么标头都不会通过。
提前致谢。
更新: 我发现了问题,但没有找到解决方案: WebRequest will not pass headers when used from within ASP.NET MVC controller
【问题讨论】:
-
根据标准,该 Authorization 标头看起来无效,可能正在被剥离。如果您想使用自定义授权标头,可能使用不同的标头名称?作为测试,如果您将标题名称更改为不同的名称会发生什么?
-
我以前使用过这种格式并且效果很好,但是对于有趣的我尝试了其他方法,我已经更新了我的帖子以反映。感谢您的回复:-)
-
当你以更传统的方式设置它时会发生什么,例如
client .Credentials = new NetworkCredential("user", "pass");(nb 这将产生与上面不同的输出) -
在执行 .Credentials 时不会将任何内容添加到标题中。可悲的是我以前做过很多次。我只是不明白为什么无论如何我都不能传递标题信息;-(
-
我得承认,发生了一些奇怪的事情。当我第一次复制您的代码并在 google.com 上尝试时,未发送授权标头。然后我在需要 Auth 的服务器上尝试了它并发送了它。然后我再次回到 google.com,现在它已发送!很奇怪
标签: c# webrequest