본문 바로가기

HTTP

[HTTP] CORS

반응형

교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다.

mdn


그렇다. 말 그대로,

내 출처(도메인, 프로토콜, 포트)에서 다른 출처(도메인, 프로토콜, 포트)에 있는 자원에 접근할 때 적용되는 규칙이다.

자원의 요청을 아무나 막 하면 안되니까, 이런 정책이 있는것이다.

해당 자원을 가져오고 싶으면 해당자원을 가지고 있는 서버로부터 권한을 부여 받아야 한다.


 

server: 넌 나에게 data를 요청할 권리가 없단다. 내가 너를 허용하지 않는이상.


 

"preflighted" requests

client : 나 이 요청 너한테 보낼껀데, 괜찮겠니? 

server : 음.. foo.example.com 에서 온 요청이군 그래, 가능해,

먼저 해당 요청이 가능한지 요청을 보내는것을 preflighted requests 라고 한다.

cf. preflighte : occurring before a flight in an aircraft. (비행 이륙직전에 일어나는것)

preflighted requests 에서 ok가 떨어지면 이젠 이륙(요청)만 하면 된다.

client : 자원요청

server : ok


서버에게 ok를 받아내는법(권한을 받아야한다.)

 

서버한테서 자원요청의 권한을 받으려면 서버쪽에서 응답을 보낼때 응답해더에 

Access-Control-Allow-Origin 을 추가하면 된다.

 

Access-Control-Allow-Origin : "허용하는 도메인"

추가적으로 허용가능한 http 메서드와 headers또한 설정이 가능하다.

(Access-Control-Allow-Method , Access-Control-Allow-Headers)

이 설정만 되어있으면 Access-Control-Allow-Origin 에 있는 어떤 도메인이라도 해당 서버에 요청할수가 있다.

반응형