프론트엔드/Node js

CORS에러

YunHyeong 2022. 3. 22. 17:57

 브라우저에서는 보안 상의 이유로, 교차 출처 HTTP요청만 할 수 있다. 따라서 브라우저는 동일한 출처의 리소스에만 접근할 수 있도록 HTTP요청을 제한하고 이를 cors에러라고 한다. 예를 들어 클라이언트에서 IP주소가 192.123.0.1이라면 서버 역시 동일한 IP주소인 192.123.0.1일 때 서버 리소스에 접근할 수 있다. 만일 서버 주소가 98.98.0.1이라면 브라우저에서는 서버 접근을 제한하며 cors policy를 위반했다고 알린다. 

 

Node js에서 해결방법

일반적인 해결 방법으로는 서버에서 header에 Access-Control-Allow-Origin를 표기해주면 된다.

 

* 예시코드

import express from 'express'

app.use((req, res, next) => {
	res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:5500');
	next();
})

이런 식으로 미들웨어 안에 'Access-Control-Allow-Origin'을 적어주면 cors에러를 해결할 수 있다.

 

But, 이 방식은 Access-Control-Allow-Origin을 일일이 작성해주어야 하며, 오타가 발생할 수 있다. 그래서 Node js에는 cors에러 처리를 위해서 유용한 미들웨어가 존재한다. 

 

* 예시코드

import express from 'express';
import cors from 'cors';

const app = express()

app.use(cors())
app.get('/', (req, res) =>{
	res.send('Hello')
})

app.listen(8080)

처음에 터미널에 npm i cors 명령문을 입력해서 cors미들웨어를 설치하고, app.use(cors())를 사용해주면 Access-Control-Allow-Origin을 헤더에 작성하지 않고도 cors에러를 처리할 수 있다.

'프론트엔드 > Node js' 카테고리의 다른 글

NestJs - 컨트롤러  (0) 2022.08.13
Validation(유효성)  (0) 2022.03.07