2012-12-20 5 views
6

에 내가 내 Asp.net MVC 웹 사이트에이를 넣어 가정 해있어 어디 확실하지 않다P3P 헤더 정보가 MVC

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 } 
); 

} 

그러나 내가 돌아왔다

응답은이 컨텍스트에서 사용할 수 없습니다.

누구나 내가 이것을 어디에 넣어야하는지 알고 있습니다.

답변

37

당신의 Web.config에 넣어 수 있습니다

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

당신이 코드에 넣을 필요가없는이 길을.

value의 의미에 대한 자세한 내용은 this SO answer을 참조하십시오.

+1

덕분에 많은 필터를 추가해야한다. 무의미한 디버깅을 통해 나를 구해 주셨습니다. – Chorinator

+1

@vtortola : 고마워! 이것은 나를 미치게했다. 훌륭한 해결책. – richb01

1

ActionFilter을 상속받은 클래스를 만들고 해당 헤더를 추가하려면 OnResultExecuting()을 재정의해야합니다.

그런 다음 전역 필터 컬렉션에 추가하십시오.

5

당신이 모든 응답에이 헤더를 원하는 가정 할 때,이 같은 뭔가가

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()); 
    } 
+0

이것은 내가 찾고있는 것이지만 이미 web.config 변경을 사용했습니다. 나는 당신을 upvoted, 감사합니다! – ErocM

관련 문제