2012-03-30 2 views
3

우리는 JQuery AJAX를 사용하여 로그인합니다. 로그인 서비스는 로그온 한 사용자의 GET 또는 로그인 실패의 경우, 승인되지 않은 HTTP 상태를 항상 리턴하는 REST 엔드 포인트 인 HTTP 302를 발행합니다. 302와 동시에 JSESSIONID에 대해 설정된 쿠키를 발행합니다. 쿠키는 HttpOnly 쿠키입니다.jQuery 리디렉션 및 HttpOnly 쿠키

스트레이트 HTTP 양식 게시물을 사용하는 경우 리디렉션이 정상적으로 작동하고 모든 것이 설정됩니다. JQuery AJAX를 사용할 때 두 번째 호출에서 쿠키가 전송되지 않으므로 GET/user/{userId} 로의 리디렉션이 작동하지 않습니다. 이 실패한 두 번째 호출은 인증 실패한 엔드 포인트로의 또 다른 리디렉션을 트리거해야하지만 실제로 그렇지 않습니다. 그것을 검사하면, 두 번째 호출이 "cancelled"가되는 것을 볼 수 있습니다. 이것이 의미하는 바는 무엇이며 어떻게 문제를 해결할 수 있습니까?

+0

비슷한 문제 그리고 여기 어떻게 해결되었다 :

당신은 여기에 대해 자세히 알아볼 수 있습니다 http://stackoverflow.com/questions/199099/how-to- 리디렉션 요청 후 jquery-ajax-call – jfriend00

답변

1

같은 출처 정책에 위배 될 가능성이 있습니다. 로그인하고있는 도메인이 페이지/스크립트 파일과 동일한 도메인에 있습니까?

그렇지 않은 경우 CORS (원본 출처 공유)를 사용하여 쿠키를 고수해야합니다.

http://www.html5rocks.com/en/tutorials/cors/

https://developer.mozilla.org/en-US/docs/HTTP_access_control

+0

여기에서 이전 질문을 정리하면됩니다. 이 대답은 완전한 대답은 아니지만 충분히 가깝습니다. 기본적으로 JSessionID에 대한 전체 설명을 확인해야했습니다. 놀이에는 2 가지가 있습니다. 1)은 GET 도메인이 HTTP 인 동안 로그인 도메인이 HTTPS 였기 때문에 Darren이 언급 한 것처럼 CORS 문제로 실행되었습니다. 2) 쿠키에 경로 (/ auth vs/rest) 문제가있어서 CORS 수정이 작동하지 않는 것입니다. 경로 문제를 해결하면 마침내 문제가 해결되었습니다. –