我正在尝试使用 C# 修改 HTTP header 。我试图操纵 Request.Headers on Page preinit 事件。但是当我尝试为 header 设置任何内容时,我得到 PlatformNotSupportedException。由于我们无法将新的 NameValueCollection 设置为 Reqeust.Headers,我尝试使用以下代码设置该值:
Request.Headers.Set(HttpRequestHeader.UserAgent.ToString(), "some value");
知道如何实现吗?
最佳答案
试试这个:
HttpContext.Current.Request.Headers["User-Agent"] = "Some Value";
编辑: 这可能是你的原因: http://bigjimindc.blogspot.com/2007/07/ms-kb928365-aspnet-requestheadersadd.html
其中有一个代码片段,它向 Request.Headers 添加了一个新的 header 。也在 Windows 7 32 位操作系统上验证。
但是你可能想替换这一行:
HttpApplication objApp = (HttpApplication)r_objSender;
与:
HttpApplication objApp = (HttpApplication)HttpContext.Current.ApplicationInstance;
编辑: 要替换现有的 Header 值,请使用:
t.InvokeMember("BaseSet", BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance, null, headers, new object[] { "Host", item });
其中“主机”是 header 名称。
关于c# - 如何使用 C# 修改请求的 HTTP header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975240/