2012-07-30 2 views
1

도메인 간 문제로 인해 2 개의 도메인 사이에서 세션을 감지하기위한 새로운 해결 방법을 시도하기로 결정했습니다. 이 과정은 쿠키를 설정하지 않고 Chrome과 Firefox에서 제대로 작동하지만 IE9에서는 제대로 작동하지 않는다고 가정했습니다.Asp.net jquery ajax request.cookies cross domain

디버그 모드에서 단계별로 수행했으며 요청한 aspx 페이지에는 자체 Request.Cookies가 없지만 크롬을 사용할 때는 액세스하지 않습니다.

프로세스는 다음에

domain1을 온

, (AN asp.net MVC 애플리케이션) 사용자가 로그인하는 로그인 과정의 일환으로, 쿠키는 해당 도메인에 설정된다.. 이 서버의 테스트 페이지를 누르면 쿠키가 설정되어있는 것을 볼 수 있습니다.

domain2 (asp.net webforms 앱)에서 cookie를 확인하고 암호화 된 문자열을 반환하기위한 domain1의 테스트 페이지에 대해 jQuery.ajax 요청을합니다.

ajax를 통해 호출 할 때 domain2에 대한이 요청을 단계별로 수행하면 request.cookies 컬렉션이 채워지지 않습니다. 실망스럽게도 User.Identity.IsAuthenticated는 사실이지만 설정 한 쿠키에 액세스 할 수 없습니다.

이것은 전체 도메인 간 보안이 작동하는 또 다른 예입니까? 나에게 그것은 심지어 jsonp와 다른 모든 다양한 머리글 등을 사용하여 아약스 호출을하는 것처럼 보이지만,이 상황에서 도움이되지는 않는다.

답변

1

귀하의 가정에 맞았습니다. JQuery는 기본적으로 페이지가있는 도메인과 다른 도메인에 연결된 경우 쿠키를 보내지 않습니다.

JQuery API에서 xhrFields를 사용하여 크로스 도메인 호출을 시도 할 수 있습니다. 도움이

$.ajax({ 
url: a_cross_domain_url, 
xhrFields: { 
    withCredentials: true 
} 
}); 

http://api.jquery.com/jQuery.ajax/

희망!

관련 문제