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

Web

(5)
[Web] CORS ํ•œ ์‚ฌ์ดํŠธ์—์„œ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ ์ด CORS์— ์˜ํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์‹ ๊ธฐํ•˜๊ฒŒ๋„ ๊ฐ™์€ ์š”์ฒญ์ด๋”๋ผ๋„ ์–ด๋–ค ๋ถ€๋ถ„์—์„œ๋Š” ๋˜๊ณ  ๋˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ๋Š” ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋•Œ CORS๋กœ ์š”์ฒญ์„ ๋ง‰๋Š” ๊ฒƒ์€ ๋ธŒ๋ผ์šฐ์ €์˜ ์˜์—ญ์ด๋‹ค. ์™œ๋ƒ๋ฉด ์šฐ๋ฆฌ์˜ ๋ธŒ๋ผ์šฐ์ €๋Š” ์šฐ๋ฆฌ๋“ค์ด ๋ฐฉ๋ฌธํ•˜๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๋ฏฟ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๐Ÿ“˜ CORS(Cross-Origin Resource Sharing) MDN - CORS ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (Cross-Origin Resource Sharing, CORS)๋Š” ์„œ๋ฒ„๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฆฌ์†Œ์Šค ๋กœ๋“œ๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•˜๋Š” ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ถœ์ฒ˜ (๋„๋ฉ”์ธ, ์ฒด๊ณ„ ๋˜๋Š” ํฌํŠธ) ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” HTTP ํ—ค๋” ๊ธฐ๋ฐ˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค . CORS๋Š” ๋˜ํ•œ ์„œ๋ฒ„๊ฐ€ ์‹ค์ œ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธ..
[Web] Socket, WebSocket (์†Œ์ผ“๊ณผ ์›น์†Œ์ผ“) ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์†Œ์ผ“์„ ์ •๋ง ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์—ˆ๋‹ค. ์‹œ๊ฐ„์ด ๊ฝค ์ง€๋‚ฌ์ง€๋งŒ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ•™์Šตํ•ด๋ณด๋ฉด์„œ ๋ณต๊ธฐ๋„ ํ•˜๊ณ  ๋‚˜๋ฆ„๋Œ€๋กœ ์ •๋ฆฌ๋„ ํ•ด๋ณด๋ ค๊ณ  ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค! ๐ŸŒ Socket ํ”„๋กœ๊ทธ๋žจ์ด ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์—ฐ๊ฒฐ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ฒด๋กœ ์†Œ์ผ“์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ํ†ต๋กœ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์„œ๋ฒ„ ์†Œ์ผ“, ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. (์š”์ฒญ์„ ํ•˜๋Š” ์ชฝ์ด ํด๋ผ์ด์–ธํŠธ, ๋ฐ›๋Š” ์ชฝ์ด ์„œ๋ฒ„) TCP/IP, UDP/IP ์œ ํ˜•์ด ์กด์žฌํ•˜๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ TCP/IP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•จ. ์†Œ์ผ“์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ผ๊ณ  ํ•˜๋Š” ํ†ต์‹ ์šฉ ๋์ (End-Point)์„ ๋งŒ๋“ค์–ด ์ž‘๋™ ๐Ÿ“’ ๋™์ž‘๋ฐฉ์‹ โœ“ Server ..
[Web] ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„๋ฉ”์ธ์„ ์ž…๋ ฅํ•˜๋ฉด ์ผ์–ด๋‚˜๋Š” ์ผ ๋งŒ์•ฝ Naver ํ™ˆํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ์ฐฝ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅ์„ ํ•˜๋Š”๋ฐ ์ด๋•Œ ์–ด๋–ค ๊ณผ์ •์„ ํ†ตํ•ด์„œ Naver์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋จผ์ € ๊ทธ๋ฆผ์œผ๋กœ๋งŒ ํ‘œํ˜„ํ•ด๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ์ฃผ์†Œ(www.naver.com)๋Š” ์›น ์ƒ์—์„œ ์‚ฌ๋žŒ๋“ค์ด ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋„๋ฉ”์ธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ํ•ด๋‹น ํ™ˆํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฐ๊ตญ ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณณ์˜ IP๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ๋จผ์ € ์šฐ๋ฆฌ์˜ PC์— ์กด์žฌํ•˜๋Š” Hosts ํŒŒ์ผ์„ ์‚ดํŽด๋ณธ๋‹ค. ๋„๋ฉ”์ธ๊ณผ IP๊ฐ€ ๋งคํ•‘๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด DNS๋ฅผ ํ†ตํ•ด IP์ฃผ์†Œ๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค. DNS (Domain Name System) ์›น ์‚ฌ์ดํŠธ์˜ IP์ฃผ์†Œ์™€ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ด์–ด์ฃผ๋Š” ์‹œ์Šคํ…œ - ๊ณ„์ธต์  ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ƒ..
[Web] JWT JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์ฟ ํ‚ค/์„ธ์…˜ ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ JWT ํ† ํฐ(Access Token)์„ HTTP ํ—ค๋”์— ์‹ค์–ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•œ๋‹ค. ๐Ÿ“˜ ๊ตฌ์กฐ JWT๋Š” Header, Payload, Sigmature ์„ธ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. Header { "alg": "HS256", "typ": "JWT" } alg: ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•  ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ typ: ํ† ํฐ์˜ ํƒ€์ž… Payload { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } Payload๋Š” ํ† ํฐ์— ๋‹ด์„ ์ •๋ณด๋ฅผ ์ง€๋‹˜ ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ๊ณ ์œ  ID ๊ฐ’ ๋ฐ ์œ ํšจ ๊ธฐ๊ฐ„ ๋“ฑ์ด ํฌํ•จ key-value ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•œ ์Œ์˜ ์ •๋ณด๋ฅผ ํด๋ ˆ์ž„(Claim)์ด๋ผ๊ณ  ํ•œ๋‹ค ํด๋ ˆ์ž„์„ ๊ณต๊ฐœ(public) ํ˜น์€ ๋น„๊ณต๊ฐœ(priv..
[Web] Webpack ๐Ÿ“˜ webpack์€ ๋ญ˜๊นŒ? webpack ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€์žˆ๋‹ค. At its core, webpack is a static module bundler for modern JavaScript applications. When webpack processes your application, it internally builds a dependency graph from one or more entry points and then combines every module your project needs into one or more bundles, which are static assets to serve your content from. ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. webpack..