LearnApplyShare

Node.js CORS setting

October 30, 2018 - [nodejs, cors]

Express 서버를 사용할 경우 cors 미들웨어를 이용해 간단하게 CORS 설정을 할 수 있다.


모든 요청에 대한 CORS 허용 설정

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

app.use(cors())

app.get("/products/:id", function (req, res, next) {
  res.json({ msg: "This is CORS-enabled for all origins!" })
})

app.listen(80, function () {
  console.log("CORS-enabled web server listening on port 80")
})

위와 같이 설정할 경우 로컬환경에서 테스트용 서버를 띄우면 localhost 로는 접근이 안 되는 문제가 있다.

이럴 경우 그냥 아래와 같이 localhost 를 whitelist에 추가할 수 있다.

const whitelist = [
  "http://localhost:3000",
  "https://sharelink-frontend.appspot.com",
  "http://sharelink-frontend.appspot.com",
]
var corsOptions = {
  origin: function (origin, callback) {
    console.log("@@@ " + origin)
    if (whitelist.indexOf(origin) >= 0 || !origin) {
      callback(null, true)
    } else {
      callback(new Error("Not allowed by CORS"))
    }
  },
}
app.use(cors(corsOptions))

Ref.

https://github.com/expressjs/cors