앞서 순수 node.js 코드로 CORS 헤더를 붙이려면, 응답 객체의 writeHead
메소드 등을 이용해 일일이 Access-Control-Allow-*
헤더를 정의해줘야만 했었다. OPTIONS
메소드에 대한 라우팅 구현도 해야한다.
const defaultCorsHeader = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Accept',
'Access-Control-Max-Age': 10
};
// 생략
if (req.method === 'OPTIONS') {
res.writeHead(201, defaultCorsHeader);
res.end()
}
하지만.. cors 미들웨어
로 쉽게 만들어 줄 수 있다.
const cors = require('cors')
// 생략
app.use(cors()) // 모든 요청에 대해 CORS 허용
const cors = require('cors')
// 생략
// 특정 요청에 대해 CORS 허용
app.get('/products/:id', cors(), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})