~ 라이브러리 복습중 ~
🔹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
}