2012-10-18 6 views
8

iframe에서 쿠키를 설정하는 데 문제가 있습니다 (다른 도메인에서 사이트를로드하는 경우).
내 사이트 X.COM I load <iframe src='Y.COM'>iframe Safari의 도메인 간 쿠키

Y.COM은 쿠키를 설정하려하지만 Safari는이 사이트를 이전에 방문하지 않았으므로 차단합니다. 따라서 Y.COM을로드하는 것은 쿠키 없이는 작동하지 않기 때문에 실패합니다. 이 문제를 해결할 방법이 있습니까?

P. Y.COM의 모든 데이터를 수정할 수 없습니다.

P.S. 또한 Safari의 설정 - "Accept cookies" = "Always"을 수정할 수는 있지만 해결책은 아닙니다. 모든 사용자가이 작업을 수행하도록 유도하는 것은 불가능한 것 같습니다.

+0

블로킹의 요점은 그것이 작동해서는 안된다는 것입니다. 일시적인 해결책을 만들면 사용자 신뢰가 위배됩니다. –

+0

다른 사람이 귀하의 사이트로 이동하면 사이트의 페이지가 다른 사이트의 페이지를로드하고 사용자가 요청하지 않은 사이트로 쿠키가 전송됩니까? 나는 사파리와 다른 모든 블록들도 이것을 희망한다. –

+1

@JamesMohler, 그는 X.COM이 쿠키를 Y.COM으로 보냈다는 것을 믿지 않습니다. Y.COM은 쿠키가 작동해야하며 iframe에로드 될 때 쿠키를 설정할 수 없습니다. –

답변

4

나는 비슷한 문제를 실험했습니다. 웹 "상위"페이지는 jquery 팬시 박스 i- 프레임 교차 도메인에서 "자식"웹 사이트를 엽니 다. 익스플로러, 크롬, 파이어 폭스, 오페라, MAC상의 사파리 (5.8.1)에서도 전혀 문제가되지 않습니다. 그러나 iPhone, iPad 및 미니 iPad에서는 i- 프레임의 세션이 손실됩니다.

i 프레임 (웹 사이트는 aspx)에있는 요소를 클릭 할 때마다 새 세션이 시작되었음을 의미합니다.

우리는 매우 간단한 방법으로 문제를 해결 :

상위 웹 사이트를 시작, 그것은 (하지 I- 프레임에서) 직접 하위 사이트에서 페이지를 호출 할 때. 이 페이지에서는 세션 변수를 설정하고 부모 웹 사이트로 리디렉션합니다. 이제 자식 웹 사이트가 iframe에서 열리면 세션이 유지됩니다.

+0

매력처럼 작동합니다. iframe을 사용하는 페이지에서 ''과 같은 링크를 렌더링했습니다. 그런 다음 바로 JS :'$ ('a') [0] .click()'을 클릭하십시오. 그러면 내 서버'/ path/to/redirect_with_session'의 라우트는 세션 플래그'session [ '_ ready'] = true'를 설정 한 다음'params [: to]'로 리디렉션합니다. 그런 다음 사파리이고 세션이 아직 초기화되지 않은 경우에만이 리디렉션 흐름을 수행할지 여부를 결정할 수 있습니다. – colllin