$http 요구는 각진 CORS에서 도메인 간 쿠키를 전송하지 않습니다.
우선 Stack의 질문이나 CORS에 관한 질문은 모두 읽었지만 아직 실장이 되지 않았습니다.내 APP는 각진 크러드 데모 위에 구축되어 있다.
앱 구성에 다음과 같은 내용이 있습니다.
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
(디버깅으로) 올바르게 설정되어 있는 것을 알고 있습니다.내 "보안" 앱에서 현재 사용자(크로스 도메인):
return $http.get(LAYOUT_CONFIG.baseURL + '/current-user').then(function(response) {
//service.currentUser = response.data.user;
service.currentUser = response.data;
return service.currentUser;
});
첫 번째 요청으로 다음 헤더를 받습니다.
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:accept, origin, content-type, cookie
Access-Control-Allow-Methods:GET,POST
Access-Control-Allow-Origin:http://admin.vibetrace.com
Access-Control-Max-Age:1728000
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Sun, 02 Jun 2013 11:07:49 GMT
P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Server:nginx/1.1.19
Set-Cookie:vibetrace.ssid=s%3A2lT2_N0-EevCJt7LbRlJ6Az1.d8xp99st%2F0RNV0VN2D4o4AJXNRT%2F%2F46v8PDVWSAbx%2Fw; Path=/; Expires=Mon, 30 Sep 2013 11:07:49 GMT
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Cache:MISS
X-Powered-By:Express
세트쿠키는 거기 있구나.단, 그 후의 $http.get request (from angular)는 이전에 설정했어야 할 쿠키를 전송하지 않습니다.
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:app.vibetrace.com
Origin:http://admin.vibetrace.com
Pragma:no-cache
Referer:http://admin.vibetrace.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36
여기서 흥미로운 부분이 나옵니다.콘솔에서 다음 코드를 실행하는 경우:
$.ajax("https://app.vibetrace.com/current-user", {
type: "GET",
success: function(data, status, xhr) {
},
xhrFields: {
withCredentials: true
},
crossDomain: true
});
요청 헤더에 쿠키가 포함되어 있습니다.
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:fbm_245656478789760=base_domain=.vibetrace.com; __utma=199448574.828439508.1336934706.1361539088.1361819816.356; __utmc=199448574; __utmz=199448574.1361819816.356.354.utmcsr=tenlister.com|utmccn=(referral)|utmcmd=referral|utmcct=/index.php; connect.sid=s%3AZ1o9bIw0jBOmQwuhKJDG1San.%2BfshIsvupiRuK0pUJqm8EAMnMBCyxf%2Fk17cAVzcy31w; __utma=173003172.1796845739.1355503443.1369827921.1369833348.68; __utmc=173003172; __utmz=173003172.1369410587.66.5.utmcsr=stage.marketizator.com|utmccn=(referral)|utmcmd=referral|utmcct=/app/builder/; vibetrace.ssid=s%3AV6biojefu9r5DTGErKL5vYPi.KAlnWMUm8jZmPV0MpP%2FrgqwmkF6WuXEZZDyzJhozYCs
Host:app.vibetrace.com
Origin:http://admin.vibetrace.com
Pragma:no-cache
Referer:http://admin.vibetrace.com/
내가 뭘 놓쳤지?
당신은 이것을 보았습니까?각도 간 통신JS 및 Jersey Webservice가 다른 도메인에 있습니다. 올바른 세션에 액세스할 수 없습니다.
config 오브젝트를 credentials로 지정하는 $http로 전달해 보겠습니다.이것은 모든 버전에서 동작합니다.
$http({withCredentials: true, ...}).get(...)
여기에서는, https://github.com/angular/angular.js/pull/1209 를 참조해 주세요.
설정withCredentials=true
효과가 있을 것입니다.특히 $190으로 동작하는 부분은 짜증납니다.그 결과, 문제가 클라이언트에 있는 것이 아니라, 서버가 반환하는 내용과 테스트 방법의 조합에 있다고 생각할 수 있습니다.
jQuery와 Angular를 모두 사용하여 동일한 경로에서 테스트하시겠습니까?
이 문제는 서버에서 가져온 쿠키와 관련이 있을 수 있습니다.경로가 올바르게 설정되어 있지 않으면 브라우저는 요청과 함께 쿠키를 다른 경로로 보내지 않습니다.이는 다른 속성에도 해당되지만 경로가 가장 유력합니다.
이는 Angular 구성과는 무관하지만 몇 시간 정도 지연될 수 있습니다.
그 외에는 Angular의 이전 버전을 사용하고 있다는 설명뿐이지만, 질문의 세부사항과 제가 보기엔 어려울 것 같은 다른 답변과의 링크를 볼 수 있습니다.
두 개의 다른 하위 도메인이 보입니다.
- admin.vibetrace.com
- app.vibetrace.com
기본 도메인에 대한 쿠키를 명시적으로 설정해 보십시오.
Set-Cookie:vibetrace.ssid=...; Domain=.vibetrace.com; Path=/; Expires=...
레퍼런스:Wikipedia: HTTP 쿠키 - 도메인 및 경로
언급URL : https://stackoverflow.com/questions/16882245/http-request-doesnt-send-cookies-cross-domain-in-angular-cors
'programing' 카테고리의 다른 글
jQuery로 입력 값을 설정한 후 각도 모델 업데이트 (0) | 2023.03.23 |
---|---|
Woocommerce 3에서 CRUD 메서드를 사용하여 프로그래밍 방식으로 제품 생성 (0) | 2023.03.23 |
커스텀 디렉티브에 Angular Validation 디렉티브를 프로그래밍 방식으로 적용할 수 있습니까? (0) | 2023.03.23 |
TypeError: HTMLInputElement 인터페이스를 구현하지 않은 개체에서 스텝업이 호출되었습니다. (0) | 2023.03.23 |
AJAX Mailchimp 등록 양식 통합 (0) | 2023.03.23 |