WebRequest 不会传递标头
本文关键字:WebRequest | 更新日期: 2023-09-27 18:31:05
我已经拖钓并尝试了一切,我以前做过 100 次没有问题,但现在我被难住了。
我只想从网络请求传递标头信息。
客户端单独运行并连接到 wcf rest 服务。 该服务有以下代码被命中:
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请求,等等...但无论如何,标题都不会通过。
提前谢谢。
更新:我发现了问题,但没有找到解决方案:从 MVC 控制器中使用时 ASP.NET WebRequest 不会传递标头
服务器是否需要身份验证?根据此答案,WebRequest 在受到质询之前不会发送凭据。如果你想发送它,不管你可能需要使用与WebRequest
不同的类来发送请求,例如 RestSharp
您可以使用 RestSharp 代替 WebRequest。它有一个简单的抽象和API。
我知道
可能有点太晚了(在寻找我的问题的一些答案时发现了这一点)。
不知道它是否会对您有所帮助,但我的就是这样,我在服务器端有授权标头,我使用的是 4.5.1。
客户端
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Headers[HttpRequestHeader.Authorization] = "basic " +
Convert.ToBase64String(
Encoding.ASCII.GetBytes(
string.Format("{0}|{1}", "login", "password")));
string result = string.Empty;
using (WebResponse resp = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
result = sr.ReadToEnd();
}
}
服务器端
WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Authorization]
使用 DefaultRequestHeaders
客户。DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("test12345")