[TIL] CORS

Dev_minΒ·2019λ…„ 10μ›” 26일
0

TIL

λͺ©λ‘ 보기
26/61

πŸ‘‰ CORS

도메인 λ˜λŠ” ν¬νŠΈκ°€ λ‹€λ₯Έ μ„œλ²„μ˜ μžμ›μ„ μš”μ²­ν•˜λŠ” λ§€μ»€λ‹ˆμ¦˜.
μ΄λ•Œ μš”μ²­μ„ ν• λ•ŒλŠ” cross-origin HTTP에 μ˜ν•΄ μš”μ²­.
ν•˜μ§€λ§Œ CORS 같은 상황이 λ°œμƒ ν•˜λ©΄ μ™ΈλΆ€μ„œλ²„μ— μš”μ²­ν•œ 데이터λ₯Ό λΈŒλΌμš°μ €μ—μ„œ λ³΄μ•ˆλͺ©μ μœΌλ‘œ μ°¨λ‹¨ν•˜κΈ° λ•Œλ¬Έμ—, μ •μƒμ μœΌλ‘œ 데이터λ₯Ό 받을 수 μ—†λ‹€.
ex) localhost:3000μ—μ„œ reactλ₯Ό μ‹€ν–‰ν•˜μ˜€κ³ , μ„œλ²„λŠ” localhost:8000μ—μ„œ μ‹€ν–‰ν•œλ‹€λ©΄, ν¬νŠΈκ°€ λ‹¬λΌμ„œ CORSκ°€ λ°œμƒν•  수 μžˆλŠ” 상황

πŸ±β€πŸ 해결방법

: μ„œλ²„μ—μ„œ cross-origin-HTTP μš”μ²­μ„ ν—ˆκ°€ ν•΄μ£ΌλŠ” 것

  1. Access-Control-Allow-Origin response 헀더λ₯Ό μΆ”κ°€
app.get('/data', (request, response) => {
    response.header('Access-Control-Allow-Origin', '*');
    response.send(data);
})

: λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈμ— μš”μ²­μ— λŒ€ν•œ cross-origin HTTP μš”μ²­μ„ ν—ˆκ°€ν•˜λŠ” 헀더λ₯Ό μΆ”κ°€ / BUT rest.api의 λͺ¨λ“  응닡에 μΆ”κ°€ν•˜κΈ°λŠ” νž˜λ“€λ‹€.

  1. node.js의 미듀웨어 CORS μΆ”κ°€
npm install --save cors
yarn add cors

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

app.use(cors());	// CORS 미듀웨어 μΆ”κ°€

const corsOptions = {
    origin : 'http://localhost:3000', // ν—ˆλ½ν•˜κ³ μž ν•˜λŠ” μš”μ²­ μ£Όμ†Œ
    credentials : true, // true둜 ν•˜λ©΄ μ„€μ •ν•œ λ‚΄μš©μ„ response 헀더에 μΆ”κ°€
};

app.use(cors(corsOptions)); // config μΆ”κ°€

✨

  • CORSλž€ 도메인 λ˜λŠ” ν¬νŠΈκ°€ λ‹€λ₯Έ μ„œλ²„μ˜ μžμ›μ„ μš”μ²­ν•˜λ©΄ λ°œμƒν•˜λŠ” 이슈
  • μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ λΆ„λ¦¬λ˜μ–΄ μžˆλŠ” μ•±μ—μ„œλŠ” cross-origin HTTP μš”μ²­μ„ μ„œλ²„μ—μ„œ μŠΉμΈν•΄μ£ΌλŠ” 것이 μ’‹λ‹€.

πŸ±β€πŸ λ¦¬μ•‘νŠΈ κ°œλ°œν™˜κ²½μ—μ„œ

ν•΄λ‹Ή 이슈λ₯Ό κ²ͺ을 κ²½μš°μ—” webpack-dev-server proxy κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ μ„œλ²„μͺ½ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³  ν•΄λ‹Ή 이슈λ₯Ό ν•΄κ²° κ°€λŠ₯
< https://create-react-app.dev/docs/proxying-api-requests-in-development >
< https://velog.io/@ground4ekd/nodejs-cra-proxy >

profile
TIL record

0개의 λŒ“κΈ€