8

我不确定我应该把它放在我的 Asp.net MVC 网站的哪个位置:

HttpContext.Current.Response.AppendHeader("P3P", "CP=\\\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\\\"");

我把它放在:

public static void RegisterRoutes(RouteCollection routes)
{
  HttpContext.Current.Response.AppendHeader("P3P", "CP=\\\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\\\"");
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  routes.MapRoute(
      "Default", // Route name
      "{controller}/{action}/{id}", // URL with parameters
      new { controller = "Account", action = "Logon", id = UrlParameter.Optional }
  );

}

但我回来了

在这种情况下没有响应。

有谁知道我应该把这个放在哪里?

4

3 回答 3

38

你可以把它放在 web.config 中:

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="P3P" value='CP="CAO PSA OUR"'/>

这样你就不需要把它放在代码中了。

有关含义的详细信息,请参阅此 SO 答案value

于 2012-12-20T15:52:01.940 回答
9

假设您希望在每个响应中都使用此标头,则应该这样做

public class P3PHeaderAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.AppendHeader("P3P", "CP=\\\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\\\"");

    }
}

然后将过滤器添加到全局集合中

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new P3PHeaderAttribute());
    }
于 2012-12-20T15:55:24.913 回答
1

您应该创建一个继承ActionFilter和覆盖的类OnResultExecuting()以添加该标头。

然后,将其添加到全局过滤器集合中。

于 2012-12-20T15:51:44.493 回答