티스토리 뷰

Web

CORS(Cross-Origin-Resource-Sharing)

콜라먹는 펭귄이 2019. 5. 2. 17:11

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함