【问题标题】:Server.TransferRequest doesn't send passed headerServer.TransferRequest 不发送传递的标头
【发布时间】:2016-12-17 00:26:30
【问题描述】:

我的目标是使用 Server.TransferRequest 发送我自己的 HTTP 响应标头。

我正在尝试做类似的事情:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();    

var headers = new NameValueCollection
{
    {"ErrorUrl", Context.Request.RawUrl},
    {"ErrorCode", code.ToString()}
};

Server.TransferRequest("~400.html", true, "GET", headers);

但是 Chrome 在响应标头中显示了我:

Accept-Ranges:bytes
Content-Length:573
Content-Type:text/html
Date:Wed, 10 Aug 2016 14:32:36 GMT
ETag:"a9d0dad4fbd1d11:0"
Last-Modified:Wed, 29 Jun 2016 11:46:10 GMT
X-Content-Type-Options:nosniff
X-Frame-Options:deny
X-SourceFiles:=?UTF-8?B?RDpcS0ZTXE1haW5cUHJvZHVjdFxLREMuVXNlcldlYlxLREMuVXNlcldlYi5XZWJSb2xlXHNyY1xWaWV3c1xlcnJvclxlbi1VU1w0MDMuaHRtbA==?=
X-XSS-Protection:1

请帮我获得预期的标题。谢谢

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 server.transfer


    【解决方案1】:

    解决了。我创建了继承 IHttpModule 的类。我添加了事件 OnPreSendRequestHeaders。而且我可以访问我发送的标头。

        public class HeadersModule : IHttpModule
        {
            public void Init(HttpApplication context)
            {
                context.PreSendRequestHeaders += OnPreSendRequestHeaders;
            }
    
            private void OnPreSendRequestHeaders(object sender, EventArgs e)
            {
                HttpContext currentContext = HttpContext.Current;
                string errorUrl = currentContext.Request.Headers["ErrorUrl"];
            }
    
            public void Dispose()
            {
            }
        }
    

    我还在 web.config 文件中添加了名称。 (见那里的例子https://msdn.microsoft.com/en-us/library/aa719858(v=vs.71).aspx

    出现此问题是因为 Server.TransferRequest 使用 指定的 HTTP 方法和标头。 (见https://msdn.microsoft.com/en-us/library/aa344901(v=vs.110).aspx

    现在我可以使用 errorUrl 并根据需要修改响应

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多