다른 Origin 허용하기
Coddy Node.js 여정의 REST API 섹션에 포함된 레슨. 25개 중 19번째.
한 출처의 페이지가 다른 출처의 API 응답을 읽으려면 권한이 필요합니다. 브라우저는 Origin 요청 헤더를 보냅니다. API는 허용된 출처를 지정하는 Access-Control-Allow-Origin으로 응답할 수 있습니다.
if (req.get('origin') === 'https://shop.example.com') {
res.set('Access-Control-Allow-Origin', 'https://shop.example.com');
}브라우저는 페이지에 응답을 노출하기 전에 이 응답 헤더를 확인합니다. API는 여전히 요청을 받을 수 있습니다. CORS는 로그인 확인이 아닙니다. 요청 바는 CORS를 적용하지 않지만, Headers 탭에서는 브라우저가 받게 될 내용을 확인할 수 있습니다.
req.get('origin')은 요청의 Origin 헤더를 읽습니다. 헤더 이름은 대소문자를 구분하지 않습니다.
챌린지
쉬움이것은 작은 연습 프로젝트입니다. 설정은 제공되어 있으니 server.js만 수정하세요.
제공된 GET 경로에서 Origin이 https://board.example.com과 같을 때만 Allow-Origin을 설정하세요. JSON 응답은 그대로 유지하세요. 실행한 다음 해당 Origin 헤더와 함께 GET /result를 보내세요. 응답 헤더가 일치해야 합니다. 다른 Origin이거나 Origin이 없으면 Allow-Origin 헤더가 포함되지 않습니다.
요청 표시줄의 Headers 필드에 Origin: https://board.example.com을 입력하세요. 응답 헤더를 확인해 허용 여부를 살펴보세요.
직접 해보기
import express from 'express';
const app = express();
app.get('/result', (req, res) => {
res.json({ ok: true });
});
app.listen(3000);
REST API의 모든 레슨
직접 연습해 보세요: Express 플레이그라운드