Computer Science/React

React CORS 처리

imygnam 2022. 8. 1. 23:19

교차 출처 리소스 공유(Cross-Origin Resource Sharing)은 한 출처에서 실행 중인 웹 application이 다른 출처의 자원에 접근할 수 있는 권한을 추가 http 헤더를 이용하여 알려주는 체제이다.
XMLHttpRequest 와 Fetch API는 동일 출처 정책을 따르기에 이부분을 염두해두어야한다.

 

해결방법.

중간에 프록시서버를 두면 되지만 react는 간단하게 해결이 가능하다.

package.json에

"proxy" : "http://~"

를 적용시키고 해당 url을 사용하는 fetch api에서 url의 호스트를 지워준뒤 사용하면 된다.

"http://~/test" -> "/test"

 

만약 여러 경로를 사용해야 하는 경우.

npm install http-proxy-middleware

 

한뒤 src 아래에 setupProxy.js를 생성한다.

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app){
  app.use(
    createProxyMiddleware('/naver', {
      target: 'https://naver.com',
      pathRewrite: {
        '^/naver':''
      },
      changeOrigin: true
    })
  )
  
  app.use(
    createProxyMiddleware('/test', {
      target: 'https://test.org',
      pathRewrite: {
        '^/test':''
      },
      changeOrigin: true
    })
  )
};

 

이러면 naver/~ 혹은 test/~를 알아서 인식하여 프록시 처리를 해준다.

naver, test는 지워지고 target 링크로 변경되어야 함으로 pathRewrite에 지워야 하는 문자열을 적어준다.