λλ©μΈ λλ ν¬νΈκ° λ€λ₯Έ μλ²μ μμμ μμ²νλ 맀컀λμ¦.
μ΄λ μμ²μ ν λλ cross-origin HTTPμ μν΄ μμ².
νμ§λ§ CORS κ°μ μν©μ΄ λ°μ νλ©΄ μΈλΆμλ²μ μμ²ν λ°μ΄ν°λ₯Ό λΈλΌμ°μ μμ 보μλͺ©μ μΌλ‘ μ°¨λ¨νκΈ° λλ¬Έμ, μ μμ μΌλ‘ λ°μ΄ν°λ₯Ό λ°μ μ μλ€.
ex) localhost:3000μμ reactλ₯Ό μ€ννμκ³ , μλ²λ localhost:8000μμ μ€ννλ€λ©΄, ν¬νΈκ° λ¬λΌμ CORSκ° λ°μν μ μλ μν©π±βπ ν΄κ²°λ°©λ²
: μλ²μμ cross-origin-HTTP μμ²μ νκ° ν΄μ£Όλ κ²
- 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μ λͺ¨λ μλ΅μ μΆκ°νκΈ°λ νλ€λ€.
- 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 >