program story

$ http는 요청에서 쿠키를 보내지 않습니다.

inputbox 2020. 11. 4. 07:57
반응형

$ http는 요청에서 쿠키를 보내지 않습니다.


AngularJS 및 Java Servlet을 사용하여 RESTful 웹 서비스를 개발하고 있습니다. 사용자가 로그인하면 백엔드가 "Set-Cookie"헤더를 프런트 엔드로 보냅니다. Angular에서는 $cookies(ngCookie-모듈)을 통해 헤더에 액세스 하고 설정합니다.여기에 이미지 설명 입력

이제 사용자가 로그인 했으므로 예를 들어 일부 항목을 삭제할 수 있습니다. 따라서 프런트 엔드는 GET 요청을 백엔드로 보냅니다. 다른 도메인에서 작업하기 때문에 일부 CORS 헤더를 설정해야하며 Angular는 실제 GET 요청 전에 OPTIONS 요청을 수행합니다.

OPTIONS 요청 : OPTIONS 요청

GET 요청 GET 요청

$ http 모듈을 통해 Angular에서이 작업을 수행하지만 JSESSIONID.

Angular가 쿠키를 보내도록하려면 어떻게해야합니까?


구성에서 DI $httpProvider를 누른 다음 withCredentials를 true로 설정하십시오.

.config(function ($httpProvider) {
    $httpProvider.defaults.withCredentials = true;
    //rest of route code
})

angularjs withCredentials에 대한 정보 : http://docs.angularjs.org/api/ng.$http

Mozilla 문서에 대한 링크 : https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#section_5


$http.get("URL", { withCredentials: true })
  .success(function(data, status, headers, config) {})
  .error(function(data, status, headers, config) {});

명심해야 할 또 다른 사항 : 타사 쿠키를 활성화 해야합니다 . Chrome에서 전역 적으로 비활성화 한 경우 도메인 이름 왼쪽에있는 "i"-기호를 클릭 한 다음 쿠키를 클릭 한 다음 "차단됨"을 클릭하고 대상 도메인을 차단 해제합니다.

참고 URL : https://stackoverflow.com/questions/17064791/http-doesnt-send-cookie-in-requests

반응형