2017-04-04 3 views
0

자바 스크립트 단일 페이지 응용 프로그램에서 프론트 엔드에 대한 사용자의 첫 번째 요청에서 쿠키는 Node JS Express로 설정됩니다.프런트 엔드 앱과 백엔드 서버간에 쿠키를 공유하는 방법은 무엇입니까?

Fetch API에 "credentials : include"옵션을 추가하여 요청에 자격증 명이 포함됩니다. 첫 번째 렌더링은 서버 쪽 렌더링과 함께 서버 쪽입니다.

개발자 도구에서 쿠키를 볼 수 있습니다. 모든 요청에 ​​대해 프런트 엔드에 보내지 만 백엔드에는 보내지 않습니다.

프런트 엔드와 백엔드 모두 노드 서버입니다. 개발 중에는 localhost의 다른 포트에도 있습니다 (호스트 파일에는 도메인을 설정했지만 차이는 없습니다). 스테이징에서 api 서버는 프론트 - 서버 도메인의 서브 도메인에 있습니다. 둘 다 작동하지 않습니다.

동일한 쿠키를 공유 할 수 있습니까? 아니면 각각에 대해 하나의 쿠키를 만들어야합니까? dev에있는 다른 포트 또는 준비중인 다른 하위 도메인 때문에 요청에 대한 쿠키를 설정할 수 없습니다.

답변

2

그래, 알아 냈어.

쿠키가 일부 요청에서는 보내졌지만 다른 요청에서는 보내지지 않았습니다. 요청 메소드를 검사하면 메소드 유형이 프리 플라이트 인 "OPTIONS"일 때 쿠키가 전송되지 않으며 분명히 정상입니다.

해결 방법은 요청 방법이 OPTIONS 인 경우 쿠키를 확인하지 않고이 경우 200 개의 빈 응답을 보내면 쿠키가 전송되는 동안 실제 요청을 처리 할 수 ​​있습니다.