CORS를 사용하는 방법을 이해하려고 노력하고 있으며 Access-Control-Allow-Credentials
헤더의 기능 에 대해 혼란스러워 합니다.
문서 는 말합니다
자격 증명 플래그가 true 일 때 요청에 대한 응답을 표시 할 수 있는지 여부를 나타냅니다.
그러나 나는 “노출 된”응답이 무엇을 의미하는지 이해하지 못한다.
자격 증명 플래그가 true로 설정되어있는 경우이 헤더가 true로 설정된 것을 실제로 설명 할 수있는 사람이 있습니까?
답변
기본적으로 CORS는 출처 간 요청에 쿠키를 포함하지 않습니다. 이것은 JSON-P와 같은 다른 교차 출처 기술과 다릅니다. JSON-P에는 항상 요청에 쿠키가 포함되며이 동작으로 인해 사이트 간 요청 위조 ( CSRF) 라는 취약성 클래스가 발생할 수 있습니다 .
CORS에서 CSRF 취약점의 가능성을 줄이려면 CORS는 서버와 클라이언트 모두 요청시 쿠키를 포함 할 수 있음을 인정해야합니다. 이렇게하면 쿠키없이 수동적으로 발생하는 것이 아니라 쿠키가 능동적으로 결정됩니다.
클라이언트 코드가 있어야 설정된 withCredentials
상의 특성 XMLHttpRequest
에 true
권한을 부여하기 위해.
그러나이 헤더만으로는 충분하지 않습니다. 서버 는Access-Control-Allow-Credentials
헤더로 응답 해야합니다 . 이 헤더로 응답 true
한다는 것은 서버가 쿠키 (또는 다른 사용자 자격 증명)가 출처 간 요청에 포함되도록 허용한다는 것을 의미합니다.
또한 출처 간 자격 증명 요청이 작동하도록하려면 브라우저가 타사 쿠키를 차단하지 않아야 합니다.
동일 출처 또는 교차 출처 요청에 관계없이 CSRF로부터 사이트를 보호해야합니다 (특히 요청에 쿠키가 포함 된 경우).