app.example.com
한 도메인에 클라이언트가 있고 다른 하위 도메인에 api.example.com
의 API 서버가 있습니다. 개발 모드에는 localhost:3000
과 localhost:4000
이 있습니다.다른 도메인에 HTTP 요청을 보낼 때 헤더의 쿠키가 손실됩니다.
Cookie
헤더가 포함 된 HTTP 요청을 보내려고합니다. 모든 것이 동일한 서버 및 도메인에있는 동안 이것은 정상적으로 작동했습니다. 그런 다음 코드를 변경하고 CORS를 추가하여 Axios
HTTP 라이브러리에 withCredentials
속성을 포함 시켰습니다. 개발 모드에서는 작동하지만 쿠키는 요청으로 보내지 만, 프로덕션 환경에서는 이것이 중단됩니다. 모든 요청은 잘 작동하는 것 같습니다. OPTIONS
다음에 POST
요청이 이어지면 200
ish 응답을받습니다.
이것은 API 서버 내 CORS 설정입니다 :
server.all('/*', (req, res, next) => {
res.header('Access-Control-Allow-Origin', DEV ? 'http://localhost:3000' : 'https://example.com')
res.header('Access-Control-Allow-Headers', '')
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
res.header('Access-Control-Allow-Credentials', 'true')
next()
})
는 내 axios
요청을 같이하는 방법이 있습니다 :
axios(`${API_URL}/someEndpoint`, {
method: 'post',
withCredentials: true,
data,
})
이 post과 대답은 도메인간에 쿠키를 공유하는 것이 불가능하다고 말합니다. 이제 나는 매우 혼란 스럽다.
내 헤더에 쿠키를 사용하여 어떤 사용자가 어떤 요청을 보내는 지 검색합니다. 헤더에서 쿠키를 잃어 버리면 어떤 요청이 어떤 사용자 (로그인하지 않은 사용자)가 보낸 것인지 더 이상 추적 할 수 없으므로이 데이터를 더 이상 통계로 수집 할 수 없습니다.
내 응용 프로그램은 모 놀리 식 이었지만 렌더링 서버에서 API 서버를 분리해야했습니다. 서버가 다른 도메인을 사용하더라도 헤더의 쿠키를 읽을 수 있습니까?