4

iframe을 통해 콘텐츠를 제공하는 mvc2 앱이 있습니다. iframe 페이지는 단순히 양식입니다. 요청 유효성 검사 토큰이 있습니다. 개발자가 Visual Studio 2005 디버거를 사용할 때까지 모든 것이 잘 작동합니다. 그들이하는대로, 나는 뒤에 오는 과실 세부 사항을 얻는다.디버거가 실행될 때만 Antiforgery 토큰 예외가 발생합니다.

Exception: 
System.Web.Mvc.HttpAntiForgeryException : A required anti-forgery token was not supplied or was invalid. 

Stack Trace: 
at System.Web.Mvc.ValidateAntiForgeryTokenAttribute.OnAuthorization(AuthorizationContext filterContext) 
at System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) 
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 

Source: 
System.Web.Mvc 

Location: 
Void OnAuthorization(System.Web.Mvc.AuthorizationContext) 

Url: 
https://mydomain.com/Portal/Framed/NewQuickPay/yFkYAA!!-OSlvtw!!-4f560479-96f2-4578-8804-a757d4913f52 


Path: 
D:\Inetpub\wwwroot\Portal\ 

Referrer: 
https://mydomain.com/portal/Framed/Index/yFkYAA!!-OSlvtw!!-4f560479-96f2-4578-8804-a757d4913f52/?amount=2861.43 


Server Name: 
/* OMITTED */ 

IP Address: 
/* OMITTED */ 

User Agent: 
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET CLR 1.1.4322) 

Is Authenticated: 
False 

Http Method: 
POST 

Form Data 
/* OMITTED */ 

__RequestVerificationToken EoJfaqoiWFUnbJFIQQeXoCeUdtVKpfX7RB0LfUXoTzRbrwK3ZYr6ZjT2ldsNGqVuB+3Vtc3uiRZoJiF+VAi7v7kdEy/sCb6jI9stzTzz/hRh3emTzBh61W9+GkFlEkxEVID8Bg== 

Cookies 
/* NONE */ 

우리는 모든 쿠키를 삭제 한 컴퓨터를 다시 시작 비주얼 스튜디오를 다시 시작하고, 여전히 디버거는이 오류가 발생합니다.

web.config에 선언 된 컴퓨터 키를 추가했습니다. 나는 그 밖에 무엇이 될 수 있는지 잘 모르겠습니다. 디버거가 실행 중이고 Visual Studio 2005를 사용중인 경우에만 발생합니다.

+0

추가 조사가 끝난 후이 문제는 Windows 7에서 실행될 때 IE에서만 발생합니다. Chrome과 Firefox는 정상적으로 작동합니다. – Josh

답변

4

답변을 찾았습니다. 내 콘텐츠가 교차 도메인 iframe을 통해 표시되었습니다. Adam Young에 따르면 IE는 헤더에 P3P 정책을 정의하지 않는 한 제 3 자 쿠키를 자동으로 차단합니다.

헤더에 p3p 정책을 삽입하고 해당 iframe에서 사용하는 각 동작에서 코드를 호출하는 코드가 추가되었습니다. 지금까지 우리는이 오류가 나타나는지 보지 못했습니다. 이 솔루션이 다른 사람에게 도움이되기를 바랍니다. 나는 그것이 필요하다고 확신하지 않지만

public static void SetP3PCompactPolicy() 
{ 
    HttpContext.Current.Response.AddHeader("p3p", 
    "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""); 
} 

나는 또한, machine key을 정의했다.

관련 문제