서버에서 받은 요청의 응답에 권한을 주는 특정 header만 추가하면 웹 브라우저가 요청이 가능한 사이트로 인식해서 요청이 가능해진다. 크롬의 경우 웹스토에서 요청을 가로채서 응담에 위 header를 추가해주는 플러그인이 있다. (웹 스토에서 cors검색)
웹 브라우저에서 css나 js같은 리소스 파일들은 동일 출저 정책에 영향을 받지 않고 로딩이 가능하다. 이런 점을 이용하여 외부 서버에서 읽어온 js 파일을 json 파일로 바꿔주는 일종의 편법적인 방법이다. 단점은 리소스 파일을 GET 메서드로 읽어오기 때문에 GET 방식의 API만 요청이 가능하다.
요청하려는 URL이 외부 도메인 일때 웹 브라우저는 preflight request(사전 요청)을 먼저 날린다.
이러한 사전 요청을 통해 권한이 있는지 없는지 확인 가능하며 서버쪽에서 이러한 사전 요청이 올 때 도메인에 접근할 수 있는 권한을 헤더에 추가하여 다시 보낸다. 이 헤더를 통해 도메인이 다르지만 ajax 요청이 가능해진다.
// package.json
"proxy" : "http : // localhost : 4000" ,
$ npm install http-proxy-middleware --save
$ # or
$ yarn add http-proxy-middleware
//src/setupProxy.js
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
// ...
};
원하는 대로 프록시를 등록할 수 있다.
```js
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
'/api',
createProxyMiddleware({
target: 'http://localhost:5000',
changeOrigin: true,
})
);
};