๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Node.js

Node.js / ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ

 

๋„คํŠธ์›Œํฌ์˜ ์ข…๋ฅ˜

 

๋„คํŠธ์›Œํฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ˜๊ฒฝ, ์†๋„์— ๋”ฐ๋ผ LAN, MAN, WAN์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.  

 

  LAN(Local Area Network) MAN (Metropolitan Area Network) WAN(Wide Area Network)
๋ฒ”์œ„ ์ข์Œ(์ฃผ๋กœ ์ง‘, ์‚ฌ๋ฌด์‹ค, ๊ฑด๋ฌผ, ์บ ํผ์Šค ๋‚ด์˜ ์ œํ•œ๋œ ์˜์—ญ) ๋„์‹œ๋‚˜ ๋Œ€๋„์‹œ์˜ ํ†ต์‹ ๋ง์„ ์˜๋ฏธ ๋„“์Œ(๊ตญ๊ฐ€๋‚˜ ๋Œ€๋ฅ™ ๊ฐ„์˜ ๋ฒ”์œ„)
๊ตฌ์„ฑ ๋‹จ์ˆœ  <------------------------------------>  ๋ณต์žก
์†๋„ ๋น ๋ฆ„  <------------------------------------>  ๋А๋ฆผ

 

* LAN : ์ •ํ™•ํžˆ๋Š” ๋™์ผํ•œ Subnet Mask๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ๊ทผ๊ฑฐ๋ฆฌ ํ†ต์‹ ๋ง์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— LAN์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

* MAN : ๋‘ ๊ฐœ ์ด์ƒ์˜ LAN์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ผ์šฐํ„ฐ / ๋ธŒ๋ฆฟ์ง€ ๋“ฑ์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. 

* WAN : ๋„“์€ ์ง€๋ฆฌ์  ์˜์—ญ์— ๊ฑธ์ณ ๋ถ„์‚ฐ๋œ ๋ชจ๋“  ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ๋ฅผ WAN์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ธํ„ฐ๋„ท๋„ WAN์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

๋„คํŠธ์›Œํฌ์˜ ๊ณ„์ธต

๊ณ„์ธต ์ด๋ฆ„ ์„ค๋ช… ํ”„๋กœํ† ์ฝœ ์ „์†ก๋‹จ์œ„ ์žฅ๋น„
์‘์šฉ ๊ณ„์ธต (Application Layer) ์‚ฌ์šฉ์ž์™€ ๋„คํŠธ์›Œํฌ ๊ฐ„ ์‘์šฉ์„œ๋น„์Šค ์—ฐ๊ฒฐ, ๋ฐ์ดํ„ฐ ์ƒ์„ฑ HTTP, FTP, SMTP, POP3, IMAP ๋“ฑ ๋ฐ์ดํ„ฐ
(Data)
ํ˜ธ์ŠคํŠธ
(PC ๋“ฑ)
ํ‘œํ˜„ ๊ณ„์ธต (Presentation Layer) ๋ฐ์ดํ„ฐ ํ˜•์‹ ์„ค์ •, ๋ถ€ํ™” ๊ตํ™˜, ์•”·๋ณตํ˜ธํ™”ํ•ด ๋ณ€ํ™˜ JPEG, MPEG ๋“ฑ
์„ธ์…˜ ๊ณ„์ธต (Session Layer) ์†ก์ˆ˜์‹  ๊ฐ„ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ ์„ค์ •·์ ‘์†, ๋™๊ธฐํ™” ๊ธฐ๋Šฅ RPC, NetBIOS ๋“ฑ
์ „์†ก ๊ณ„์ธต (Transport Layer) ์†ก์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์—ฐ๊ฒฐ, ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ, ๋ฐ์ดํ„ฐ ๋ถ„ํ•  / ์žฌ์กฐ๋ฆฝ / ํ๋ฆ„·์˜ค๋ฅ˜·ํ˜ผ์žก ์ œ์–ด TCP / IP, UDP ๋“ฑ ์„ธ๊ทธ๋จผํŠธ
(Segment)
L4 ์Šค์œ„์น˜
๋„คํŠธ์›Œํฌ ๊ณ„์ธต (Network Layer) ๋‹จ๋ง๊ธฐ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ์ตœ์ ํ™”๋œ ๊ฒฝ๋กœ ์ œ๊ณต, ๋…ผ๋ฆฌ์  ์ฃผ์†Œ(IP ์ฃผ์†Œ) ๊ด€๋ฆฌ IP, ICMP, RIP, OSPF ๋“ฑ ํŒจํ‚ท
(Packet)
๋ผ์šฐํ„ฐ
๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต (Data Link Layer) ๋ฌผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์„ค์ •, ์ธ์ ‘ ์‹œ์Šคํ…œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก, ๋™๊ธฐํ™”, ์˜ค๋ฅ˜·ํ๋ฆ„·ํšŒ์„  ์ œ์–ด HDLC, PPP, ํ”„๋ ˆ์ž„ ๋ฆด๋ ˆ์ด, ATM ๋“ฑ ํ”„๋ ˆ์ž„
(Frame)
๋ธŒ๋ฆฌ์ง€, L2 ์Šค์œ„์น˜
๋ฌผ๋ฆฌ ๊ณ„์ธต (Physical Layer) ๋น„ํŠธ ์ •๋ณด๋ฅผ ํšŒ์„ ์— ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ์ „๊ธฐ์  ์‹ ํ˜ธ ๋ณ€ํ™˜ RS-232C ๋น„ํŠธ(Bit) ํ—ˆ๋ธŒ, ๋ฆฌํ”ผํ„ฐ

 

 

์บก์Аํ™”, ์—ญ์บก์Аํ™”

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : ํŒ”๋งŒ์ฝ”๋”ฉ๊ฒฝ

 

๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ—ค๋”(* ๋ฐ์ดํ„ฐ์˜ ์•ž๋ถ€๋ถ„์— ์ „์†ก ์‹œ ํ•„์š”ํ•œ ์ •๋ณด)๋ฅผ ๋ถ™์—ฌ ๋‹ค์Œ ๊ณ„์ธต์œผ๋กœ ๋ณด๋‚ธ๋‹ค. 

์ด์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๋Š” ์ธก์—์„œ ํ—ค๋”๋ฅผ ๋ถ™์—ฌ๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ์บก์Аํ™”๋ผ๊ณ  ํ•˜๋ฉฐ,

๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ์ธก์—์„œ ํ—ค๋”๋ฅผ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•ด๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ์—ญ์บก์Аํ™”๋ผ๊ณ  ํ•œ๋‹ค.

 

 


 

 

HTTP

HyperText Transfer Protocol์˜ ์•ฝ์ž๋กœ, ์›น ๊ธฐ๋ฐ˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ TCP/IP ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. 

 

 

ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ

์ถœ์ฒ˜ : ์˜ค์ฆˆ์ฝ”๋”ฉ์Šค์ฟจ

 

HTTP๋Š” ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ด ๋•Œ ์š”์ฒญ / ์‘๋‹ต ์‹œ ์˜ค๊ณ ๊ฐ€๋Š” ๋ฉ”์‹œ์ง€๋ฅผ HTTP ๋ฉ”์‹œ์ง€๋ผ๊ณ  ํ•œ๋‹ค.

 

HTTP ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

์ฒซ ์ค„์—๋Š” HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ, URL ๊ฒฝ๋กœ, HTTP ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š” HTTP ์š”์ฒญ์˜ ํ—ค๋”๋“ค์ธ๋ฐ, ํ—ค๋”๋Š”  key:value  ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

ํ—ค๋”์—๋Š” ์›น์‚ฌ์ดํŠธ ๋„๋ฉ”์ธ์˜ ํ˜ธ์ŠคํŠธ, ์–ธ์–ด, ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ™์€ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค.

 

GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept-Language: ko-KR

 

 


๋ธŒ๋ผ์šฐ์ €์˜ ๋„คํŠธ์›Œํฌ ํƒญ์—์„œ๋„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์™ผ์ชฝ์€ ํ—ค๋”, ์˜ค๋ฅธ์ชฝ์€ ํ—ค๋” ๊ฐ’๋“ค์ด๋‹ค.

 

 

๋ฌด์ƒํƒœ์„ฑ

HTTP์—์„œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š”๋‹ค.

HTTP ์š”์ฒญ์€ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋งค๋ฒˆ ํ•จ๊ป˜ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด API์—์„œ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ‚ค๋‚˜ ํ† ํฐ์˜ ๊ฒฝ์šฐ๋ผ๋˜๊ฐ€, ๋กœ๊ทธ์ธ ๋œ ์œ ์ €์˜ ์ •๋ณด ๋“ฑ์€ ์„œ๋ฒ„๊ฐ€ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ, ๋งค ์š”์ฒญ๋งˆ๋‹ค ํ† ํฐ ๋“ฑ์„ ๋ณด๋‚ด์„œ ์ธ์ฆํ•ด์•ผ ํ•œ๋‹ค.

 

(๋งค๋ฒˆ ์•„๋ž˜์™€ ๊ฐ™์€ ์ธ์ฆ ์ •๋ณด๋ฅผ ๋ณด๋‚ด์•ผํ•œ๋‹ค...)

GET /user/profile
Authorization: Bearer eyxxxxxxx...

 

 

๋น„์—ฐ๊ฒฐ์„ฑ

์ถœ์ฒ˜ : ์˜ค์ฆˆ์ฝ”๋”ฉ์Šค์ฟจ

 

HTTP์—์„œ๋Š” ์š”์ฒญ - ์‘๋‹ต์ด ๋๋‚˜๋ฉด ์—ฐ๊ฒฐ์ด ๋ฐ”๋กœ ๋Š์–ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„์—์„œ๋Š” ๋™์‹œ์— ๋งŽ์€ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ  ์—ฐ๊ฒฐ ์ค‘์— ์ง€์ถœ๋˜๋Š” ๋น„์šฉ์„ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค. (์š”์ฒญ - ์‘๋‹ต์ด ๋๋‚˜๋”๋ผ๋„ ์—ฐ๊ฒฐ์ด ๊ณ„์† ๋˜์–ด์žˆ๋‹ค๋ฉด ์„œ๋ฒ„ ๋น„์šฉ์ด ์ง€์ถœ๋œ๋‹ค...)

 

 

 

HTTPS

 

Hypertext Transfer Protocol Secure์˜ ์•ฝ์ž๋กœ, ๋ชจ๋“  ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ SSL(Secure Socket Layer) ๋ฐ TLS(Transport Layer Security) ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค.

 

์•”ํ˜ธํ™” ๋ฐฉ์‹

1. ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹

- ํ•˜๋‚˜์˜ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™”ํ•  ๋•Œ ๋™์ผํ•œ ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹

- ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ ๋ณด์•ˆ์„ฑ์ด ๋ฏธํกํ•จ

 

2. ๋น„๋Œ€์นญ ํ‚ค(๊ณต๊ฐœ ํ‚ค) ๋ฐฉ์‹

- ๋‘ ๊ฐœ์˜ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์•”ํ˜ธํ™”ํ•˜๋Š” ํ‚ค์™€ ๋ณตํ˜ธํ™”ํ•˜๋Š” ํ‚ค๊ฐ€ ๋‹ค๋ฅธ ๋ฐฉ์‹

- ์•”ํ˜ธํ™” ์—ฐ์‚ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ๋น„์šฉ์ด ํผ

 

HTTPS์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ๋‹ค! โฌ‡๏ธ

๋”๋ณด๊ธฐ

 


์„œ๋ฒ„ ↔ ์ธ์ฆ๊ธฐ๊ด€

1) ์„œ๋ฒ„๊ฐ€ ์ธ์ฆ๊ธฐ๊ด€์— ์ž์‹ ์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ณด๋ƒ„

2) ์ธ์ฆ ๊ธฐ๊ด€์€ ํ•ด๋‹น ์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์ธ์ง€ ํ™•์ธํ•˜๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ ๋˜๋ฉด ์ธ์ฆ ๊ธฐ๊ด€์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์•”ํ˜ธํ™”

3) ์ธ์ฆ๊ธฐ๊ด€์ด ๋ฐœ๊ธ‰๋œ ์ธ์ฆ์„œ๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌ

4) ์„œ๋ฒ„์—์„œ๋Š” HTTPS ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

ํด๋ผ์ด์–ธํŠธ ↔ ์„œ๋ฒ„

5) ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTPS๋กœ ์ ‘์† ์š”์ฒญ

6) ์„œ๋ฒ„๊ฐ€ HTTPS ํ†ต์‹ ์„ ์œ„ํ•ด ์ธ์ฆ์„œ ์ „๋‹ฌ

7) ํด๋ผ์ด์–ธํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋œ ์ธ์ฆ ๊ธฐ๊ด€ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธ ํ›„, ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๊ธฐ๊ด€์ด๋ฉด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณต๊ฐœํ‚ค๋กœ ์ธ์ฆ์„œ ๋ณตํ˜ธํ™” ์‹œ๋„

7-1) ๋งŒ์•ฝ ๋ณตํ˜ธํ™”๊ฐ€ ์•ˆ๋œ๋‹ค๋ฉด ์ธ์ฆ์„œ๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ => HTTPS ์—ฐ๊ฒฐ ์‹คํŒจ

8) ๋ณตํ˜ธํ™” ์„ฑ๊ณต => ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค ํš๋“

9) ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋Œ€์นญํ‚ค ์ƒ์„ฑ

10) ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋Œ€์นญํ‚ค๋ฅผ ์•”ํ˜ธํ™”

11) ์•”ํ˜ธํ™”ํ•œ ๋Œ€์นญํ‚ค๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†ก

12) ๋น„๋ฐ€ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•ด ๋Œ€์นญํ‚ค ํš๋“

13) HTTPS ์—ฐ๊ฒฐ ์„ฑ๋ฆฝ!

=> ์ดํ›„๋กœ๋Š” ๋ฐ์ดํ„ฐ ๊ต๋ฅ˜ ์‹œ ๋Œ€์นญํ‚ค๋ฅผ ์ด์šฉํ•ด ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™”


HTTPS ์ธ์ฆ ๋ฐฉ์‹

  • ๋น„๋Œ€์นญ ํ‚ค ๋ฐฉ์‹ -> ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ & ๊ฒ€์ฆํ•  ๋•Œ, ๋Œ€์นญํ‚ค๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ
  • ๋Œ€์นญ ํ‚ค ๋ฐฉ์‹ -> ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ

 

 


 

 

 

SOP_CORS

SOP

Same-Origin Policy (๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…)์˜ ์•ฝ์ž๋กœ, ๋™์ผํ•œ ์ถœ์ฒ˜(Origin)์˜ ์ž์›๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜๊ฐ„์˜ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐจ๋‹จํ•œ๋‹ค.

 

์ถœ์ฒ˜(Origin) : ํ”„๋กœํ† ์ฝœ + ๋„๋ฉ”์ธ + ํฌํŠธ

์œ„ ์„ธ ๊ฐ€์ง€๊ฐ€ ๋ชจ๋‘ ๊ฐ™์•„์•ผ ๋™์ผ ์ถœ์ฒ˜๋กœ ํŒ๋‹จ๋œ๋‹ค!

 

ex) https://example.com:443 ๋ผ๋Š” origin์ด ์žˆ๋‹ค๋ฉด

http://example.com → ํ”„๋กœํ† ์ฝœ ๋‹ค๋ฆ„
https://api.example.com → ๋„๋ฉ”์ธ ๋‹ค๋ฆ„
https://example.com:3000 → ํฌํŠธ ๋‹ค๋ฆ„

 

ex) http://localhost:5174

http://localhost:3000 → ํฌํŠธ ๋‹ค๋ฆ„
https://localhost:5174 → ํ”„๋กœํ† ์ฝœ ๋‹ค๋ฆ„
http://127.0.0.1:5174 → ํ˜ธ์ŠคํŠธ ๋‹ค๋ฆ„

 

 

 

CORS

Cross Origin Resource Sharing (๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ )์˜ ์•ฝ์ž๋กœ, ๋‹ค๋ฅธ ๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ ๋˜๋Š” ํฌํŠธ ๊ฐ„ ์›น ํŽ˜์ด์ง€์™€ ์„œ๋ฒ„์˜ ์ž์›์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. SOP๋กœ ์ธํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐจ๋‹จ๋œ ์š”์ฒญ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. 

 

CORS ์—๋Ÿฌ


CORS๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์‘๋‹ต ํ—ค๋”๋ฅผ ์„ธํŒ…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

CORS ํ—ค๋”

  • Access-Control-Allow-Origin: ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ
  • Access-Control-Allow-Methods: ์„œ๋ฒ„์—์„œ ํ—ˆ์šฉํ•  HTTP ๋ฉ”์„œ๋“œ
  • Access-Control-Allow-Headers: ์„œ๋ฒ„์—์„œ ํ—ˆ์šฉํ•  HTTP ํ—ค๋”

 

CORS ์„ค์ • ์‹œ / ์„ค์ •์„ ์•ˆํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ–ˆ์„ ์‹œ

 

- Preflight Request (์‚ฌ์ „์š”์ฒญ) : ๋ณธ๊ฒฉ์ ์ธ ์š”์ฒญ ์ „์— ์„œ๋ฒ„ ์ธก์—์„œ ๊ทธ ์š”์ฒญ์˜ ๋ฉ”์„œ๋“œ์™€ ํ—ค๋”์— ๋Œ€ํ•ด ์ธ์‹ํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” CORS ์š”์ฒญ (๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ์ „์— ๋ฏธ๋ฆฌ ์š”์ฒญํ•ด๋ณด๋Š” ๊ฒƒ)

 

 

 

 

์ฐธ๊ณ 
LAN : https://aws-hyoh.tistory.com/entry/LAN-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
WAN : https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-wan/
OSI 7๊ณ„์ธต : ์ˆ˜์ œ๋น„ - ์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ์‹ค๊ธฐ 
์บก์Аํ™”/์—ญ์บก์Аํ™” : https://80000coding.oopy.io/2a16be4e-9187-4ce7-86b0-cb8e7b1e26af 
HTTP : https://docs.tosspayments.com/resources/glossary/http-protocol
HTTPS : https://velog.io/@ddangle/HTTPS%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%95%94%ED%98%B8%ED%99%94%ED%95%98%EB%8A%94%EA%B0%80 
CORS : https://en.wikipedia.org/wiki/Cross-origin_resource_sharing#:~:text=CORS%20(%20%EA%B5%90%EC%B0%A8%20%EC%B6%9C%EC%B2%98%20%EB%A6%AC%EC%86%8C%EC%8A%A4%20%EA%B3%B5%EC%9C%A0,%EC%9E%88%EB%8F%84%EB%A1%9D%20%ED%97%88%EC%9A%A9%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9E%85%EB%8B%88%EB%8B%A4. 
Preflight Request : https://developer.mozilla.org/ko/docs/Glossary/Preflight_request

 

 

 

 

'Node.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Node.js / ํ† ํฐ(Token)  (0) 2025.05.15
Node.js / ์„ธ์…˜(Session)  (0) 2025.05.14
Node.js / ์ฟ ํ‚ค(Cookie)  (0) 2025.05.14