์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- database
- ํ์ด์ฌ
- html
- ๋ ์
- ๊ฐ๋ฐ
- ์ฑ
- css
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์นํผ๋ธ๋ฆฌ์ฑ
- ์ฝ๋ฉ
- ๋ฆฌ์กํธ
- K๋ฐฐํฐ๋ฆฌ
- JavaScript
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ์ค๋ผํด
- ComputerScience
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐ์ํ
- ์ค๋ธ์
- ์ปดํจํฐ๊ณผํ
- Python
- Java
- ๋ผํ๋ผ์ค์๋ง๋
- ์ํ
- ํ๋ก๊ทธ๋๋ฐ
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ์๋ฐ
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- Today
- Total
JiYoung Dev ๐ฅ
[Node.js] Express์ listen ๋ฐ Cors ์ค์ ๋ณธ๋ฌธ
์ด์ ์์ฑํ๋ Nginx์์ Reverse Proxy ์ค์ ํ Spring Server์์ Cors ์๋ฌ๊ฐ ๋ฐ์ํ์ฌ Spring Security Cors ์ค์ ์ ์ธ๋ถ๋ง ์ฃผ์๋ฅผ ์ถ๊ฐํด ํด๊ฒฐํ์๋ค๊ณ ํ์๋ค. ํด๋น ๊ธ์์๋ ์์ฑํ์ง ์์์ง๋ง Node.js Express ์๋ฒ์์๋ Cors ์๋ฌ๊ฐ ๋ฐ์ํ์๋๋ฐ Cors ์ค์ ๊ณผ ํจ๊ป app.listen("0.0.0.0")์ ์ถ๊ฐํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
์์ ๊ณผ์ ์ ์งํํ๋ฉด์ Cors๋ฅผ ์ค์ ํ๋ ๊ฒ๊ณผ app.listen("0.0.0.0")์ ์ค์ ํ๋ ๊ฒ์ด ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์์๋ณด์๋ค.
๐ Cors ์ค์ ์ ์ญํ
Cors(Cross-Origin Resource Sharing)๋ ์น ๋ธ๋ผ์ฐ์ ๋ฐ์ํ๋ ๋ณด์ ์ ์ฑ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์ถ์ฒ(Origin)์ ๋ฐ๋ผ ์๋ฒ๊ฐ ์์ฒญ์ ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
์ฌ๊ธฐ์ ์ถ์ฒ(Origin)์ด๋ ํ๋กํ ์ฝ(http, https), ๋๋ฉ์ธ(์๋ฒ IP ๋๋ ๋๋ฉ์ธ), ํฌํธ๋ฒํธ์ ์กฐํฉ์ด๋ค.
์๋ฅผ ๋ค์ด, http://localhost:3000์ ํ๋์ ์ถ์ฒ์ด๊ณ , http://localhost:5000์ ํฌํธ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ ๋ค๋ฅธ ์ถ์ฒ์ด๋ค.
Cors๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ์ถ์ฒ์์ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ์๋ฒ๊ฐ ์ด ์์ฒญ์ ํ์ฉํ ์ง ๊ฒฐ์ ํ๋ ์ค์ ์ด๋ค.
โ ์์
๋ฆฌ์กํธ ์ฑ์ด http://192.168.1.1:3000์์ ์คํ๋๊ณ ์๊ณ , Node.js ์๋ฒ๊ฐ http://192.168.1.1:5000์์ ์คํ๋๊ณ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๋ฆฌ์กํธ ์ฑ์์ Node.js ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ํฌํธ์์์ ์์ฒญ์ ๋ค๋ฅธ ์ถ์ฒ๋ก ๊ฐ์ฃผํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ CORS ์ ์ฑ ์ ์ํด ์ฐจ๋จํ๊ฒ ๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ Node.js ์๋ฒ์์ Cors ์ค์ ์ ํตํด ๋ฆฌ์กํธ ์ฑ์ ์์ฒญ์ ํ์ฉํ ์ ์๋๋ก ํด์ผ ํ๋ค.
app.use(cors({
origin: "*", // ๋ชจ๋ ์ถ์ฒ์์ ์ค๋ ์์ฒญ์ ํ์ฉ
methods: ["GET", "POST", "PUT", "DELETE"], // ํ์ฉํ HTTP ๋ฉ์๋ ์ค์
}));
์์ ๊ฐ์ด ์ค์ ์ ํ๋ฉด ๋ฆฌ์กํธ ์ฑ(์ด๋ค ์ถ์ฒ์์๋ )์์ ์ค๋ ์์ฒญ์ Node.js๊ฐ ํ์ฉํ๋ค.
๐ app.listen("0.0.0.0") ์ค์
app.listen("0.0.0.0") ์ค์ ์ ์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ์ ์ ์๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ค์ ํ๋ ๊ฒ์ด๋ค. ์ด ์ค์ ์ ์๋ฒ์ ์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
0.0.0.0์ ๋ชจ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์์ ์ค๋ ์์ฒญ์ ์์ ํ๊ฒ ๋ค๋ ์๋ฏธ์ด๊ณ , ๋ง์ฝ app.listen("localhost") ํน์ app.listen("127.0.0.1")๋ก ์ค์ ํ๋ฉด, ์๋ฒ๋ ๋ก์ปฌ ๋จธ์ ์์๋ง ์ ๊ทผํ ์ ์๋ค.
๋ฐ๋ผ์ ๋ก์ปฌ์ด ์๋ ์ธ๋ถ์์ ์๋ฒ์ ์ ๊ทผํ๋ ค๋ฉด ์๋ฒ๊ฐ 0.0.0.0์ผ๋ก ์ค์ ๋์ด ์์ด์ผ ํ๊ณ , ๋์์ ์๋ฒ์ ๋ฐฉํ๋ฒฝ์ด๋ ๋คํธ์ํฌ ์ค์ ์์ ํด๋น ํฌํธ๊ฐ ์ด๋ ค ์์ด์ผ ํ๋ค.
๐ Cors vs app.listen("0.0.0.0")
Cors ์ค์ ์ ์๋ฒ๊ฐ ๋ค๋ฅธ ์ถ์ฒ์์์ ์์ฒญ์ ํ์ฉํ ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ด๋ค. ์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ(๋ฆฌ์กํธ ์ฑ)์์ ๋ค๋ฅธ ๋๋ฉ์ธ์ด๋ ํฌํธ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ฅผ ํ์ฉํ ์ง ๋ง์ง๋ฅผ ์ค์ ํ๋ค.
์ฆ, Cors๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ค์ ์ด๋ผ๊ณ ํ ์ ์๋ค. (๋ธ๋ผ์ฐ์ ๊ฐ ์ฃผ์ฒด)
app.listen("0.0.0.0") ์ค์ ์ ์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ์ ์ ์๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ค์ ํ๋ ๊ฒ์ด๋ค. ์๋ฒ๊ฐ ์ค์ ๋ก ๋คํธ์ํฌ์์ ์์ฒญ์ ์์ ํ ์ ์๋๋ก ํฌํธ์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ์ธ๋ฉํ๋ ์ญํ ์ ํ๋ค. ์ด ์ค์ ์ ํตํด ์๋ฒ๊ฐ ์ธ๋ถ IP์์ ์ค๋ ์์ฒญ์ ์๋ฝํ ์ ์๊ฒ ๋๋ค.
์ฆ, ์๋ฒ๊ฐ ์ด๋์๋ ์์ฒญ์ ๋ฐ์ ์ ์๋๋ก ์ค์ ํ๋ ๊ฒ์ ๋งํ๋ค. (์๋ฒ๊ฐ ์ฃผ์ฒด)
โ ๋ง์ฝ Cors๋ง ์ค์ ํด ๋๊ณ , listen("0.0.0.0") ์ค์ ์ ํ์ง ์๋๋ค๋ฉด?
๋ง์ฝ ์ธ๋ถ๋ง์์ ๋ด๋ถ๋ง์ผ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ Cors๋ง ์ค์ ํ๊ณ app.listen("0.0.0.0")์ ์ค์ ํ์ง ์์ผ๋ฉด ์๋ฒ๋ Cors ์ ์ฑ ์ ํ์ธํ ์ ์์ง๋ง, ์ฌ์ ํ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ง ๋ชปํ๊ฒ ๋๋ค.
์์ฒญ์ ๋ณด๋ธ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ๋์ง ์๊ธฐ ๋๋ฌธ์, Cors ์ค์ ์ด ์ ๋์ด ์๋ค๊ณ ํ๋๋ผ๋ ์์ฒญ์ ์ฑ๊ณตํ์ง ์๊ฒ ๋๋ค.
โ ๊ทธ๋ผ Port๋ง ๋ค๋ฅผ ๋๋ app.listen์ ์ค์ ํ์ง ์์๋ ์์ฒญ์ ์ฑ๊ณตํ๊ณ , IP๊น์ง ๋ค๋ฅด๋ฉด app.listen๊ณผ ๋์์ Cors ์ค์ ๊น์ง ๊ฐ์ด ํด์ค์ผ ํ๋๊ฑด๊ฐ?
port๋ง ๋ค๋ฅผ ๋์๋ ๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฅธ ์ถ์ฒ๋ก ์ธ์ํ๊ณ Cors ์ ์ฑ ์ด ์ ์ฉ๋๋ค. ๊ทธ๋ฌ๋ ip๊ฐ ๊ฐ๊ธฐ ๋๋ฌธ์ ์๋ฒ ์ ์ฅ์์๋ ์ฌ์ ํ ๊ฐ์ ip์์ ์์ฒญ์ ๋ฐ์ผ๋ฏ๋ก Cors ์ค์ ๋ง์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์ฒญ์ ํ์ฉํ ์ ์๋ค.
๋ฐ๋ฉด IP๊น์ง ๋ค๋ฅผ ๋์๋ ์๋ฒ๊ฐ ์ธ๋ถ ๋คํธ์ํฌ์์ ์์ฒญ์ ๋ฐ์ ์ ์๋๋ก app.listen()์ ์ฌ์ฉํ์ฌ ์๋ฒ๋ฅผ 0.0.0.0(๋ชจ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค)๋ก ๋ฐ์ธ๋ฉ ํด์ผ ํ๋ค.
'full stack > Back-End' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ก๊ทธ ๋ ๋ฒจ ๋ฐ ๋ก๊ทธ ์์ฑ ๊ธฐ์ค (0) | 2024.11.11 |
---|---|
Nginx๋ก Reverse Proxy ์ค์ ํ๊ธฐ (0) | 2024.11.06 |
[Spring - Android] JPA ํ์ฉ ์ฐ๋ํ๊ธฐ (2023.07.20~21) (0) | 2023.07.20 |
[Node.js] nunjucks (2023.07.12) (0) | 2023.07.12 |
[Node.js] Socket ํต์ (2023.07.10) (0) | 2023.07.10 |