2011-04-28 2 views
1

양식이있는 iFrame이있는 프레임 세트가 있습니다. 양식을 제출할 때 IE8은 양식 값을 보내지 않습니다. Firefox는 않습니다. 주변 프레임 세트가 없으면 작동합니다.IE8 : iFrame에서 양식을 제출하면 작동하지 않습니다.

form.php :

<form method="post" action="doit.php" name="myForm" id="myForm" target="myFrame"> 
    <input type="hidden" id="customer__csrf_token" name="customer[_csrf_token]" value="0136dba17fc1a81dc2c3b44dcb513712" /> 
    ... 
    <a onClick="document.myForm.submit();">Send</a> 
</form> 

site.html :

<iframe id="myFrame" name="myFrame" src="form.php" frameborder="0" >foo</iframe> 

index.html을 :

내 코드입니다
<html> 
    <head></head> 
    <frameset rows='100%,*'> 
     <frame name='target' src='site.html'> 
     <noframes>foo</noframes> 
    </frameset> 
</html> 

(3210)는 또한 이러한 호출과 양식을 제출하려고 : 당신이 나를

$('#myForm').submit(); 
document.forms['myForm'].submit(); 
parent.frames['myFrame'].document.forms['myForm'].submit(); 
<input type="submit" value="send" name="send" id="send" /> 

도와 드릴까요?

편집 :

가 나는 문제를 발견했다. 심포니 프레임 워크를 사용합니다. 심포니는 숨겨진 csrf 토큰을 쿠키 값과 함께 사용하여 양식 전송을 보호합니다. 제 경우 IE8은 어떤 이유로이 쿠키를 저장할 수 없습니다. 이제 올바르게 작동하도록 양식에서 csrf 토큰을 제거했습니다.

+0

CSRF 값을 자신이 여는 양식에서 제거하여 CSRF 공격까지 이해할 수 있습니다. 이는 양식이하는 일에 따라 크게 다를 수도 있고 그렇지 않을 수도 있습니다. –

+0

감사합니다. 질문과 후속 수정 : 내가 경험했던 버그의 방향으로 나를 지적했습니다. +1 – Christopher

답변

1

CSRF는 주요 문제가 아니 었습니다. 필자의 경우 IE 보안 설정 때문에 문제가 발생했습니다. IE는 a.o를 허용하지 않습니다. 밑줄이있는 도메인의 쿠키 내 도메인은 foo_bar.dev.domain.com이고, foo-bar.dev.domain.com으로 변경되었으므로 CSRF가 활성화되었습니다.

관련 문제