ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CORS, Proxy
    etc 2020. 12. 13. 17:04

    CORS (Corss-Origin Resource Sharing) 

    추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있도록 권한을 부여하도록 브라우저에 알려주는 체제이다.

    웹 애플리케이션은 리소스가 자신의 출처 (도메인, 프로토콜, 포트) 와 다를 때 교차 출처 HTTP 요청을 실행한다.

     

    https://developer.mozilla.org/ko/docs/Web/HTTP/CORS

     

    두 개의 다른 포트를 가지고 있는 서버는 아무 설정없이 Request 를 보낼 수 없다.

    WHY ? -> CORS 정책 때문에, 보안을 위해서 

    HOW TO SOLVE ? -> 여러 가지 방법이 있다. 

    - 동일한 출처 사용하기

    - 서버쪽 해결 (response)

      HTTP 응답헤더 Access-Control-Allow-Origin : * 혹은 Access-Control-Allow-Origin : 허용하고자 하는 도메인 설정해주기

      

      express 에서는 이를 쉽게 해결해주는 미들웨어 제공

    const express = require('express')
    const cors = require('cors')
    const app = express()
     
    app.use(cors())

     

    - 클라이언트쪽 해결 (request) 

      리소스 요청하는 서버 사이에 Proxy Server 를 거쳐서 요청, 응답을 주고 받기

      프록시 서버는 헤더를 추가하거나 요청을 허용/거부하는 역할을 중간에서 해줘서 Access-Control-Allow-Origin : * 의 헤더를 담아 응답해준다.

      중간단계가 있기 때문에 속도가 느려지는 단점이 있다.

     

    npm install http-proxy-middleware
    const { createProxyMiddleware } = require('http-proxy-middleware');
    
    module.exports = function(app) {
      app.use(
        '/api',
        createProxyMiddleware({
          target: 'http://localhost:5000',
          changeOrigin: true,
        })
      );
    };

     

    # Proxy Server

    유저 <=> Proxy Server <=> 인터넷

    1. 방화벽 기능

    2. 웹 필터 기능

    3. 캐쉬 데이터, 공유 데이터 제공 기능

     

     

     

     


    ※ 출처

    developer.mozilla.org/ko/docs/Web/HTTP/CORS

    create-react-app.dev/docs/proxying-api-requests-in-development/

    velog.io/@kimtaeeeny/CORS-와-해결방법-express-proxy-FE-study8

    'etc' 카테고리의 다른 글

    docker, redis  (0) 2021.02.09
    mac 세팅  (0) 2021.01.19
    react-springboot 연동  (0) 2021.01.16
    wsl2 설치  (0) 2021.01.14
    git  (0) 2020.12.07
킹수빈닷컴