[번외] nodeJS의 CORS방식 허용하기

 

~ 라이브러리 복습중 ~

 

 

🔹CORS


Cross-Origin Resource Sharing

  • 자신이 속하지 않은 도메인/프로토콜/포트에 있는 리소스를 요청하는 cross-origin HTTP요청 방식
  • 웹사이트가 구동중인 domain과 동일한 domain에 자료를 요청&수신한다 ⇒ CORS아님
  • 웹사이트가 구동중인 domain과 다른 domain에 자료를 요청&수신한다 ⇒ CORS

 

서버는 기본적으로 CORS방식을 제한한다

  • 특정 서버 리소스에 다른 임의 웹 사이트들이 request를 보낸다면
    • 악의적으로 특정 서버 세션을 탈취 가능성 존재
    • 서버에 무리가는 행위를 야기할 가능성 존재

 

🔹Node.js로 CORS 방식 허용하기


 

1. 필요한 모듈 설치

npm install http express cors

2. 사용예제 작성

모든 도메인의 접근 허용하기

**const http= require('http');**
**const express = require('express');**
**const cors = require('cors');**
const app= express();
const server = createServer(app);

const PORT = 3005;

**app.use(cors());**

app.get('/', (req, res) => {
	res.send("server on");
});

server.listen(PORT, () => {
	console.log(`server running on ${PORT}`);
});

  • app.use(cors()) : 모든 도메인에서 제한 없이 해당 서버에 요청과 응답을 가능하게 설정함

특정 도메인의 접근 허용하기

const http= require('http');
const express = require('express');
const cors = require('cors');
const app= express();
const server = createServer(app);

const PORT = 3005;

**let corsOptions = {
	origin:'<https://www.naver.com>',
	credentials: true**

**app.use(cors(corsOptions));**

app.get('/', (req, res) => {
	res.send("server on");
});

server.listen(PORT, () => {
	console.log(`server running on ${PORT}`);
});
  • app.use(cors(corsOptions))
    • corsOptions 변수에 작성한 도메인의 요청을 허용한다

 

3. Configuration Options


  • corsOptions의 옵션들
    • origin : 액세스/허용/권한 관련
    • method: [’get’, ‘put’, ‘post’]
    • allowedHeaders:
    • exposedHeaders
    • credentials
    • maxAge
    • preflightContinue
    • optionsSuccessStatus
  • default configuration 설정
{
  "origin": "*",
  "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
  "preflightContinue": false,
  "optionsSuccessStatus": 204
}