본문 바로가기
IT 공부/공통

CORS ( 교차 출처 자원 공유 )

by woohot 2022. 12. 2.

20년 9월 회사에서 React , koa 로 웹을 만든 경험이 있었다.

 

그 시기에 리액트 할 줄아는 사람은 없었다.

 

클라이언트와 서버를 따로 기동해 구성하였었다. (  port 가 다르다 . host까지는 같았다.. )

 

처음에 postman으로 테스트했을땐 문제가 없었던걸로 기억하는데 

 

요청을 보낼때 마다 error 가 ... 

 

아마 "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at $somesite"

이런 메세지를 봤던 기억이 난다.

 

간단한 기능도 되지않아 많이 당황했었다.  지금도 정확히 알지 못한다고 생각해 정리 하려한다.

 

 

---------------------------------------------------------------------------------------------------------------

 

 

MDN의 정의를 보면 

교차 출처 자원 공유 (CORS)는 서버가 same origin 정책(same-origin policy)을 완화할 수 있게 해 주는 표준입니다.

라고 한다.

 

 

#Orgin (출처)이란?

 

https:// www.nave.com/user?oo   라고 하면

 

https                 - protocol

www.nave.com - Host

/user                  - path

?oo                    - queryString

 

 

여기서 출처

protocol + host + port 를 합친 것 이 된다.

 

그러므로 같은 서버에서 react 와 koa 로 따로 기동 하였을때 port가 다르기 때문에 

Cors error 가 발생하였다

 

 

SOP(Same-Origin-Policy)  - 동일 출처 정책

'동일한 출처에서만 리소스를 공유할 수 있다'

 

 

 

 

1.  클라이언트 : http 요청 헤더에 Origin 을 담는다

2.  서버            : 응답헤더에 Access-Control-Allow-Origin 을 담는다.

3.  

 

# 해결책 

1. chrome 확장 프로그램   Allow CORS: Access-Control-Allow-Origin  , localhost 환경에서 API 테스트 시 유용

2. 프록시 사이트 이용.

 

 

 

 

-------

 

그 외 알게된 사실

 

HTML                                                    -> Cross-Origin 정책 

script , XMLHttpRequest,Fetch API 등 -> Same-Origin 정책

 

 

참고

 

https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-CORS-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-%F0%9F%91%8F

'IT 공부 > 공통' 카테고리의 다른 글

critical rendering path  (0) 2023.03.30
크로스 브라우징  (0) 2023.02.15
HTTP 상태 코드  (0) 2023.01.17
예외 처리 ( exception )  (0) 2022.08.29

댓글