SPA(Single Page Application)
CORS(Cross Origin Resouce Sharing)란?
SOP(Same Origin Policy)
그렇다면 CORS는 어떻게 이루어 지는가??
위와 같이 요청헤더에 Origin에 출처를 담아 보낸다.
이에 대한 응답으로 Access-Controll-Allow-Origin헤더를 다시 전송한다.
응답 헤더가 이렇게 된다면 모든 도메인에서 접근할 수 있다.
Access-Control-Allow-Origin: 특정URI
하지만 이렇게 된다면, 특정URI를 제외한 도메인은 Cross-site방식의 접근을 할 수 없다.
HTTP Option 메서드를 사용하여 다른 도메인의 리소스를 요청할 때 실제 요청을 전송하기에 안전한지 확인한다.
이것은 요청
이것은 응답
Option메서드의 응답에 Access-Controll-Allow-Origin이 담겨서 오면 본 요청을 보내고 응답을 받는다.
이 때 origin이 달라도 Preflight에서 요청이 성공하고 콘솔에서는 실패하는 경우가 있는데, CORS의 위반여부를 판단하는 것은 Preflight의 응답을 받은 뒤이기 때문이다.
그렇기 때문에 Preflight의 성공 여부와 상관 없이 응답 헤더에 있는 Access-Control-Allow-Origin의 존재 여부이다.
CORS의 방법은 두가지이다.
1. Simple requests - 요청헤더에 origin을 담아 응답받는법.
2. Preflight - 본 요청 전에 안전한 출처인지 확인하는법