Same-origin policy는 웹 애플리케이션의 중요한 보안 모델
→ 두 URL의 세개의 조건이 모두 같아야 동일한 출처라고 표현
😱 그럼, 출처가 다른 도메인에서의 AJAX요청이라도 데이터 접근 권한을 허용하고 싶다면...?
→ CORS 활용해 접근 가능!
교차 출처 리소스 공유(Cross-Origin Resource Sharing)
HTTP의 일부로, 어떤 호스트에서 자신의 콘텐츠를 불러갈 수 있는지 서버에 지정할 수 있는 방법입니다.
즉, Same-Origin Policy 의 문제점을 해결하기 위한 정책으로 웹 페이지 상의 제한된 다른 출처를 가진 리소스 요청 시 cross-origin HTTP 요청 실행
(웹 페이지는 교차 출처 이미지, 스타일시트, 스크립트, iframe, 동영상을 자유로이 임베디드 가능)
출처 : https://commons.wikimedia.org/wiki/File:Flowchart_showing_Simple_and_Preflight_XHR.svg
Access-Control-Allow-Origin
response headerAccess-Control-Allow-Origin
response headerAccess-Control-Allow-Origin: https://mozilla.org --> 특정 도메인
Access-Control-Allow-Origin: * --> 모든 도메인
이외 사용할 수 있는 response header
Access-Control-Expose-Headers
→ 브라우저가 접근할 수 있는 헤더를 서버의 화이트리스트에 추가
Access-Control-Max-Age
→ preflight
request 요청 결과를 캐시할 수 있는 시간을 나타냄
Access-Control-Allow-Credentials
→ credentials
플래그가 true
일 때 요청에 대한 응답을 표시할 수 있는지를 나타냄
Access-Control-Allow-Methods
→ 리소스에 접근할 때 허용되는 메서드를 지정
Access-Control-Allow-Headers
→ 실제 요청시 사용할 수 있는 HTTP 헤더를 나타냄
cors()
사용 해 적용직접 구현한 서버 없이 클라이언트 내에서만 해결해야 하는 상황 존재
proxy란?
→ 다양한 이유로 직접 통신하지 못하는 두개의 컴퓨터 사이에서 서로 통신할 수 있도록 돕는 역할
proxy: host:portNumber
작성http-proxy-middleware
패키지 사용http → https
⇒ jsonp 이용 시 호출 가능https → http
⇒ 호출 불가능