Javascript/웹 개발

CORS

Frankie 2021. 4. 17. 20:09

- Cross Origin Resource Sharing의 약자

- 현재 도메인과 다른 도메인으로 리소스가 요청될 경우

ex) http://a.com에서 읽어온 html 페이지지에서 다른 도메인 http://b.com/image.png를 요청하는 경우

- 이런 경우 해당 리소스는 cross-origin HTTP 요청에 의해 요청, 보안 상의 이유로 브라우저는 CORS를 제한

 

- 하지만 SPA의 경우 RESTful API를 기반으로 비동기 네트워크 통신을 하기 때문에 API 서버와 웹 페이지 서버가 다를 수 있다. 이런 경우에 API 서버로 요청을 할 시에 CORS 제한이 걸린다.

 

Access-Control-Allow-Origin

 

- 이를 해결하기 위한 간단한 방법은 서버의 응답 헤더를 변경해주는 것

- 서버의 헤더 중 Access-Control-Allow-Origin라는 속성은 CORS를 허용해 줄 도메인을 입력하는 곳이다. 모든 곳에 CORS를 허용하기 위해 *를 입력하면 된다.

Access-Control-Allow-Origin: *

특정 도메인에만 허용하려면 * 부분에 특정 도메인들을 입력하면 된다.

 

Express에서 CORS 허용하기

 

1) 헤더를 직접 변경해주는 방법

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*")
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
    next()
})

2) 미들웨어를 사용하는 방법(추천)

const express = require('express');
const cors = require('cors');
const app = express();

app.use(cors()); //CORS 설정

app.listen(3000, function(){
	console.log('hi');
}

이처럼 미들웨어 사용 시, 모든 CORS 요청을 허용할 시 한 줄로 간단하게 추가 가능하다!

'Javascript > 웹 개발' 카테고리의 다른 글

클라이언트 사이드 렌더링/서버 사이드 렌더링  (0) 2021.07.20
동기/비동기  (0) 2021.07.20
타입스크립트  (0) 2021.07.20
REST API  (0) 2021.04.16
[GIT] 개념  (0) 2020.04.30