CORS


서로 다른 도메인 또는 포트로 리소스를 요청할 때 CORS를 설정하지 않으면 에러가 발생한다.

Ajax 통신 시 same-origin 정책에 의해 동일한 도메인과 포트로만 요청, 응답할 수 있기 때문이다.
즉, CORS는 다른 도메인 또는 포트로도 리소스를 요청할 수 있도록 해준다.


서버 측에서 CORS를 허용하는 방법

Access-Control-Allow-Origin 응답 헤더

서버 응답에서 접근 권한을 주는 것.

  • Access-Control-Allow-Origin: * // 모든 도메인
  • Access-Control-Allow-Origin: ‘http://example.com’ // 특정 도메인

헤더에 추가해서 응답하면 CORS를 허용한다.


Express 기반 서버 CORS 허용

Express 미들웨어 모듈을 설치 및 사용한다.

npm install cors


설치 후 아래와 같이 간단하게 사용할 수 있다.

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

특정 경로의 요청에만 CORS를 허용하는 등의 다른 설정은 여기를 참고하자.


hapi 기반 서버 CORS 허용

내부 옵션을 이용한다.

const server = Hapi.server({
  port: 5000,
  host: "0.0.0.0",
  routes: {
    cors: true
  }
});

또는, 아래와 같이 특정 경로의 요청에만 CORS 허용도 가능하다.

server.route({
    method: 'GET',
    path: '/',
    options: {
        cors: true,
        handler: (req, h) => {
              ...
        }
    }
});

추가적인 설정은 공식 문서를 참조하자