是否可以在web.config中添加响应http头?

时间:2010-05-27 14:50:31

标签: asp.net

在我的应用程序中,我需要设置一个http响应头。我想在web.config中执行此操作。

6 个答案:

答案 0 :(得分:57)

执行此操作的最佳方法是<customHeaders>文件的web.config元素。请注意,这仅适用于IIS 7及更高版本。

添加示例标头的配置为:

<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Content-Language" value="*" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

有关详细信息,请参阅IIS "Custom Headers" Configuration Reference page

答案 1 :(得分:10)

<强>解决方案 最后,经过长时间的搜索,我找到了解决方案。使用以下代码创建一个类:

public class myHTTPHeaderModule : IHttpModule
{

    #region IHttpModule Members

    public void Dispose()
    {

    }

    public void Init(HttpApplication context)
    {
        context.EndRequest += new EventHandler(context_EndRequest);
    }

    void context_EndRequest(object sender, EventArgs e)
    {
        HttpResponse response = HttpContext.Current.Response;

        response.AddHeader("Content-Language", "*");

    }

    #endregion
}

(不要问我为什么要使用这个活动,但它确实有效..)

现在在HttpModule部分的web.config中添加一行:

    <httpModules>
        <add type="namespace.myHTTPHeaderModule, assembly name" name="headers" />
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>

就是这样!

答案 2 :(得分:1)

您始终可以将项目添加到configuration.appSettings部分。

然后您的母版页,自定义基页类或特定页面可以通过从web.config中读取来设置这些http标头

答案 3 :(得分:1)

我不知道你可以在web.config

上做到这一点

到目前为止,我知道你有最好的选择:

  • 创建一个HTTPModule,您可以在其中设置所有响应的标题
  • 在IIS上添加标题

这里有MSDN参考:

Custom HttpModule Example

此链接具有HTTPModule的实现,似乎是您需要的

<击> http://idunno.org/archive/2006/08/01/252.aspx

答案 4 :(得分:1)

我相信这里没有一个答案是全面的,所以这是我的:

请参阅我的博客文章,了解如何添加自定义HTTP模块以添加/删除HTTP标头here。虽然我试图解决的问题不同但我也需要添加/删除HTTP标头。博客文章的要点如下:

执行此操作的事件是HttpContext.PreSendRequestHeaders。您也可以从IIS设置或IIS的配置执行此操作,如IIS Knowledge base所示。此配置文件(applicationHost.config)位于 %WinDir%\ System32 \ Inetsrv \ Config \ applicationHost.config ,用于默认安装。

答案 5 :(得分:0)

没有内置功能可以执行此操作

您可以创建一个从web.config读取标头的HttpModule,并将其添加到响应中。