我的目标是使用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
请帮助我获得预期的标题。感谢
答案 0 :(得分:0)
解决。我创建了类继承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使用以下命令执行指定URL的异步执行 指定的HTTP方法和标头。 (见https://msdn.microsoft.com/en-us/library/aa344901(v=vs.110).aspx)
现在我可以使用errorUrl并根据需要修改响应