티스토리 뷰
CORS란?
cors란 cross origin resouce sharing의 줄임말로 다른 도메인에 요청을 보낼수 있게 하는 표준 규약이다.
좀 더 간단하게 설명하자면 내 도메인이 foo.com일 때 bar.com에게 요청을 보낼 수 있게 하는 것이다.
cors의 기본적인 형태는 다음과 같다.
Request
GET /resources/access-control-with-get/ HTTP/1.1
Host: aruner.net
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://arunranga.com/examples/access-control/simpleXSInvocation.html
Origin: http://arunranga.com
Response
HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 00:23:53 GMT
Server: Apache/2.0.61
Access-Control-Allow-Origin: http://arunranga.com
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/xml
응답 헤더에 Access-Control-Allow-Origin이 CORS라는 것을 나타낸다.
위의 상황에서는 http://arunranga.com에서만 접속이 허용된다.
만약 Access-Control-Allow-Origin의 값이 *이라면 모든 도메인으로부터 접속이 가능하다는 것을 의미한다.
만약 CORS가 가능한지 확인만 하고 싶다면 OPTION메소드로 요청하면 된다.
Request
OPTIONS /resources/access-control-with-post-preflight/ HTTP/1.1
Host: aruner.net
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: http://arunranga.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-PINGARUNER
Response
HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 01:15:39 GMT
Server: Apache/2.0.61 (Unix)
Access-Control-Allow-Origin: http://arunranga.com
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGARUNER
Access-Control-Max-Age: 1728000
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 0
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/plain
요청에서 Access-Control-Allow-Methods는 다음에 보낼 메소드를 의미하고 응답에서의 Access-Control-Allow-Methods는 가능한 요청 메소드를 의미한다.
Aceess-Control-Allow-Headers는 커스텀 헤더가 있음을 의미한다.
Acess-Control-Allow-Headers는 마찬가지로 허용된 도메인 범위를 의미한다.
참고한 블로그: https://zamezzz.tistory.com/137
'Web' 카테고리의 다른 글
웹 프론트 Pan Zoom 개발기 (0) | 2021.03.23 |
---|