HTTP(HyperText Transfer Protocol)์ HTTPS(HyperText Transfer Protocol Secure)๋ ์ธํฐ๋ท์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์์ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ ํต์ ๊ท์ฝ์
๋๋ค. ์ด ๊ธ์์๋ HTTP์ ๊ธฐ๋ณธ ๊ฐ๋
๊ณผ ๋ณด์ ์ทจ์ฝ์ , ์ด๋ฅผ ๋ณด์ํ๋ HTTPS์ ํต์ ํ๋ฆ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ HTTP๋ ๋ฌด์์ธ๊ฐ?
HTTP(HyperText Transfer Protocol)๋ ์ธํฐ๋ท ์์์ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์์ ์น ๋ธ๋ผ์ฐ์ )์ ์๋ฒ ๊ฐ์ ์์์ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํต์ ๊ท์ฝ์
๋๋ค. ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค:
- ์์ฒญ-์๋ต(Request-Response) ๋ชจ๋ธ: ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ URL์ ์
๋ ฅํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์น ์๋ฒ์ HTTP ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ฒ๋ ์์ฒญ๋ ์น ํ์ด์ง๋ ๋ฆฌ์์ค๋ฅผ ์๋ต์ผ๋ก ๋ฐํํฉ๋๋ค.
- ๋ฌด์ํ์ฑ(Stateless): HTTP๋ ๊ฐ ์์ฒญ ๊ฐ์ ์ฐ๊ฒฐ์ ์ ์งํ์ง ์์ต๋๋ค. ์ฆ, ํ ๋ฒ์ ์์ฒญ๊ณผ ์๋ต์ด ์๋ฃ๋๋ฉด ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฐ๊ฒฐ์ ๋์ด์ง๋ฉฐ, ๊ฐ ์์ฒญ์ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ํ
์คํธ ๊ธฐ๋ฐ: HTTP๋ ํ
์คํธ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค. ์์ฒญ๊ณผ ์๋ต์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ์ ํ
์คํธ๋ก ํํ๋๋ฉฐ, ํน์ ํฌ๋งท(๋ฉ์๋, URL, ํค๋, ๋ฐ๋ ๋ฑ)์ ๋ฐ๋ฆ
๋๋ค.
- ๋ฉ์๋: HTTP๋ ๋ค์ํ ์์ฒญ ๋ฉ์๋๋ฅผ ์ง์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, GET(๋ฆฌ์์ค ์์ฒญ), POST(๋ฐ์ดํฐ ์ ์ถ), PUT(๋ฆฌ์์ค ์์ ), DELETE(๋ฆฌ์์ค ์ญ์ ) ๋ฑ์ด ์์ต๋๋ค.
- ํฌํธ: HTTP๋ ๊ธฐ๋ณธ์ ์ผ๋ก 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ณด์์ด ๊ฐํ๋ ๋ฒ์ ์ธ HTTPS๋ 443๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํฉ๋๋ค.
HTTP๋ ๋ฐ์ดํฐ๋ฅผ ํ
์คํธ๋ก ๊ตํํ๊ธฐ ๋๋ฌธ์, ๋คํธ์ํฌ ์์์ ๋๊ตฐ๊ฐ ์ ํธ๋ฅผ ๊ฐ๋ก์ฑ๋ฉด ๊ทธ ๋ด์ฉ์ด ๋
ธ์ถ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด HTTPS์
๋๋ค.
HTTP ํค๋
HTTP ํค๋๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ ๋ฉํ๋ฐ์ดํฐ์
๋๋ค. HTTP ์์ฒญ(Request) ๋๋ ์๋ต(Response) ๋ฉ์์ง์ ํฌํจ๋๋ฉฐ, ํต์ ์ ์ฑ๊ฒฉ์ ์ ์ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์์ฒญ ํค๋(Request Header) : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ.
User-Agent ํค๋๋ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ๋ณด๋ ์ด์์ฒด์ ๋ฅผ ์๋ฒ์ ์ ๋ฌํฉ๋๋ค.
- ์๋ต ํค๋(Response Header) : ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ ๋ ์ถ๊ฐ ์ ๋ณผ๋ฅผ ์ ๊ณตํ๋๋ฐ ์ฌ์ฉ.
Content-Type ํค๋๋ ์๋ฒ๊ฐ ์๋ตํ๋ ๋ฐ์ดํฐ ํ์์ ๋ช
์.
- ์บ์ฑ ์ ์ด :
Cache-Control๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ ์๋ต์ ์บ์ํ ์ ์๋์ง, ์ผ๋ง๋ ์ค๋ ์บ์ํ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ๋ณด์ ์ ์ด :
Authorization ํค๋๋ ์์ฒญ์ด ์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจํ๋์ง ๋ํ๋ด๊ณ , Set-Cookie๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ฟ ํค๋ฅผ ์ค์ ํ๋ผ๊ณ ์ง์ํฉ๋๋ค.
HTTP ๋ฉ์๋
- GET
- ์ค๋ช
: ์๋ฒ๋ก๋ถํฐ ๋ฆฌ์์ค๋ฅผ ์์ฒญ(์กฐํ, ๊ฒ์)ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ง ์๊ณ , ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- ํน์ง :
- ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์ : ๋ฐ์ดํฐ๋ฅผ URL์ ์ฟผ๋ฆฌ ์คํธ๋ง์ผ๋ก ํฌํจ์์ผ ์ ์กํฉ๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋, ์์ฒญํ ๋ฐ์ดํฐ๊ฐ URL์ ํฌํจ๋ฉ๋๋ค.
- ๋จ, URL์ ํฌํจ๋๋ ๋ฐ์ดํฐ์ ์์ด ์ ํ์ ์
๋๋ค.
- ์์ ์ฑ ๋ฐ ๋ณด์ : URL์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ธฐ ๋๋ฌธ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์กํ๋๋ฐ ์ ํฉํ์ง ์์ต๋๋ค.
- ์์ ์ฑ : GET ์์ฒญ์ ์๋ฒ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ํฉ๋๋ค.
- ์์ดํ
ํฌํด์ค(Idempotence) : ๋์ผํ GET ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ๋ณด๋ด๋ ๊ฒฐ๊ณผ๋ ๋์ผํฉ๋๋ค.
- ์บ์ฑ ๊ฐ๋ฅ : GET ์์ฒญ์ ์บ์ฑ๋ ์ ์์ด, ๋์ผํ ์์ฒญ์ ๋ฐ๋ณต ์์ฒญํ ๊ฒฝ์ฐ ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก :
- ์น ํ์ด์ง ๋ก๋ ์ HTML ๋ฌธ์, ์ด๋ฏธ์ง, CSS, JavaScript ๋ฑ์ ์๋ฒ์์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ์กฐํํ๋ RESTful API ์์ฒญ(GET/users).
- POST
- ์ค๋ช
: POST ๋ฉ์๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ๊ฑฐ๋ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.(์ ์ก, ๋ฆฌ์์ค ์์ฑ)
- ํน์ง :
- ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์ : ๋ฐ์ดํฐ๋ฅผ HTTP ์์ฒญ์ ๋ณธ๋ฌธ์ ํฌํจ์์ผ ์ ์กํฉ๋๋ค. URL์๋ ๋ฐ์ดํฐ๊ฐ ๋ํ๋์ง ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ข ๋ ์์ ํ๊ฒ ์ ์ก๋ฉ๋๋ค.
- ์์ ์ฑ ๋ฐ ๋ณด์ : ๋ฐ์ดํฐ๊ฐ ๋ณธ๋ฌธ์ ํฌํจ๋์ด ์ ์ก๋๋ฏ๋ก, URL์ ๋
ธ์ถ๋์ง ์์ผ๋ฉฐ, ๋น๊ต์ ๋ณด์์ฑ์ด ๋์ต๋๋ค. ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์์ ํ์ง ์์ : POST ์์ฒญ์ ์๋ฒ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ์์ดํ
ํฌํด์ค๊ฐ ์๋ : ๋์ผํ POST ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ๋ณด๋ด๋ฉด, ์ค๋ณต๋ ๋ฆฌ์์ค๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค.
- ์บ์ฑ ๋ถ๊ฐ๋ฅ : ์ผ๋ฐ์ ์ผ๋ก POST ์์ฒญ์ ์บ์ฑ๋์ง ์๊ณ ์๋ฒ์์ ํญ์ ์๋กญ๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก :
- ์น ํผ ์ ์ถ, ์๋ฅผ ๋ค์ด ํ์๊ฐ์
, ๋ก๊ทธ์ธ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์ ์กํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ๋ RESTful API ์์ฒญ(POST/users)
- PUT
- ์ค๋ช
: PUT ๋ฉ์๋๋ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ ๋์ฒดํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ํน์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง :
- ์์ดํ
ํฌํด์ค : ๋์ผํ PUT ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ๋ณด๋ด๋๋ผ๋ ๊ฒฐ๊ณผ๋ ๋์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ผํ ํ์ผ์ ์ฌ๋ฌ ๋ฒ ์
๋ก๋ํ๋ฉด, ํ์ผ์ด ๋ฎ์ด์ฐ์ฌ์ง๋ฉฐ ๊ฒฐ๊ณผ๋ ๋ณํ์ง ์์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก :
- ํน์ ๋ฆฌ์์ค์ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด RESTful API์์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธํ ๋(์: PUT /users/123)
- DELETE
- ์ค๋ช
: DELETE ๋ฉ์๋๋ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง :
- ์์ดํ
ํฌํด์ค : ๋์ผํ DELETE ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ๋ณด๋ด๋๋ผ๋ ๊ฒฐ๊ณผ๋ ๋์ผํฉ๋๋ค. ์ญ์ ํ ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ๋จ์ํ ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์๊ฒ ๋ฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก :
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ํญ๋ชฉ์ ์ญ์ ํ๋ RESTful API ์์ฒญ(์:DELETE /users/123)
- ํ์ผ์ด๋ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์์ ์ญ์ ํ ๋.
- PATCH
- ์ค๋ช
: PATCH ๋ฉ์๋๋ ๋ฆฌ์์ค์ ์ผ๋ถ๋ฅผ ์
๋ฐ์ดํธํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. PUT๊ณผ ๋ฌ๋ฆฌ ์ ์ฒด ๋ฆฌ์์ค๊ฐ ์๋ ๋ถ๋ถ์ ์ธ ์
๋ฐ์ดํธ๋ฅผ ์ํํฉ๋๋ค.
- ํน์ง :
- ์์ดํ
ํฌํด์ค : ๋์ผํ PATCH ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ๋ณด๋ด๋๋ผ๋ ๊ฒฐ๊ณผ๋ ๋์ผํฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก ;
- ํน์ ๋ฆฌ์์ค์ ์ผ๋ถ ์์ฑ๋ง ๋ณ๊ฒฝํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ(PATCH /users/123).
- HEAD
- ์ค๋ช
: GET ์์ฒญ๊ณผ ์ ์ฌํ์ง๋ง, ์๋ต ๋ณธ๋ฌธ์ ํฌํจํ์ง ์์ต๋๋ค. ๋ฆฌ์์ค์ ํค๋ ์ ๋ณด๋ง ์์ฒญํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง
- ์์ ์ฑ ๋ฐ ์์ดํ
ํฌํด์ค : GET๊ณผ ๋์ผํ๊ฒ ๋์ํ์ง๋ง, ์๋ต ๋ณธ๋ฌธ์ด ์์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก
- ๋ฆฌ์์ค์ ๋ฉํ๋ฐ์ดํฐ(์: ํ์ผ ํฌ๊ธฐ, ์์ ๋ ์ง)๋ฅผ ํ์ธํ ๋.
- ๋งํฌ์ ์ ํจ์ฑ์ด๋ ๋ฆฌ์์ค์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ ๋
- TRACE
- ์ค๋ช
: TRACE ๋ฉ์๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ด ์๋ฒ๊น์ง ๋๋ฌํ๋ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง
- ๋ณด์์ ์ด์ ๋ก ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ : ๋ณด์ ์ํ(์: XXS ๊ณต๊ฒฉ) ๋๋ฌธ์ ๋๋ถ๋ถ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ์์ TRACE ์์ฒญ์ ๋นํ์ฑํํฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก :
- ๋คํธ์ํฌ ๋๋ฒ๊น
์ฉ์ผ๋ก ์ฌ์ฉ๋์ง๋ง, ์ค๋ฌด์์๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
HTTP ์ํ ์ฝ๋(HTTP Status Code)
HTTP ์ํ ์ฝ๋๋ ์น ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ตํ ๋, ๊ทธ ์์ฒญ์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋์๋์ง๋ฅผ ๋ํ๋ด๋ 3์๋ฆฌ ์ซ์์
๋๋ค. ์ด ์ฝ๋๋ ์์ฒญ์ ๊ฒฐ๊ณผ๋ฅผ ์์ฝํด์ฃผ๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ํ๋์ ๊ฒฐ์ ํ๋๋ฐ ๋์์ ์ค๋๋ค. HTTP ์ํ ์ฝ๋๋ 5๊ฐ์ ๋ฒ์ฃผ๋ก ๋๋ ์ ์์ผ๋ฉฐ, ๊ฐ ๋ฒ์ฃผ๋ ํน์ ์ ํ์ ์๋ต์ ๋ํ๋
๋๋ค.
- 100 Continue : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋์ ๋, ์๋ฒ๊ฐ ์์ฒญ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ๋ฐ๊ณ , ๋๋จธ์ง ์์ฒญ์ ์ด์ด์ ๋ณด๋ด๋ ๋๋ค๋ ์ ํธ๋ฅผ ๋ํ๋
๋๋ค.
- 101 Switching Protocols : ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ผ ํ๋กํ ์ฝ์ ๋ณ๊ฒฝํ๊ณ ์๋ค๋ ์๋ต์
๋๋ค. ์๋ฅผ๋ค์ด, HTTP์์ WebSocket์ผ๋ก ์ ํํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
2xx (์ฑ๊ณต, Successful Responses)
- 200 OK : ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์์ ๋ํ๋
๋๋ค. ์ฃผ๋ก GET, POST ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- 201 Created : ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์๊ณ , ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋์์์ ๋ํ๋
๋๋ค. ์ฃผ๋ก POST ์์ฒญ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- 204 No Content : ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์ง๋ง, ์๋ต ๋ณธ๋ฌธ์ ๋ณด๋ด์ค ๋ฐ์ดํฐ๊ฐ ์์์ ๋ํ๋
๋๋ค. ์๋ฅผ ๋ค์ด, ์ญ์ ์์ฒญ์ด ์ฑ๊ณตํ์ ๋, ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
3xx (๋ฆฌ๋ค์ด๋ ์
, Redirection Responses)
- 301 Moved Permanently : ์์ฒญํ ๋ฆฌ์์ค๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ค๋ฅธ URI๋ก ์ด๋๋์์์ ๋ํ๋
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด ์๋ต์ ๋ฐ์ ์ URL๋ก ์๋ ๋ฆฌ๋ค์ด๋ ํธํฉ๋๋ค.
- 302 Found : ์์ฒญํ ๋ฆฌ์์ค๊ฐ ์ผ์์ ์ผ๋ก ๋ค๋ฅธ URI๋ก ์ด๋๋์์์ ๋ํ๋
๋๋ค. ์๋์ URL์ด ๋์ค์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ์์์ ์๋ฏธํฉ๋๋ค.
- 304 Not Modified : ํด๋ผ์ด์ธํธ์ ์บ์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ์ ํ ์ ํจํจ์ ๋ํ๋ด๋ฉฐ, ์๋ฒ๊ฐ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ง ใ
๋ณ๊ณ ์บ์๋ฅผ ์ฌ์ฉํ๋๋ก ์ง์ํฉ๋๋ค.
4xx (ํด๋ผ์ด์ธํธ ์ค๋ฅ, Client Error Responses)
- 400 Bad Request : ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์๋ชป๋์๊ฑฐ๋, ์๋ฒ๊ฐ ์ดํดํ ์ ์๋ ํ์์์ ๋ํ๋
๋๋ค.
- 401 Unauthorized : ์ธ์ฆ์ด ํ์ํ๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์ ํจํ ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช
์ ์ ๊ณตํ์ง ์์์์ ๋ํ๋
๋๋ค.
- 403 Forbidden : ์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ์ง๋ง, ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค์ ์ ๊ทผํ ๊ถํ์ด ์์์ ๋ํ๋
๋๋ค.
- 404 Not Found : ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์์ ์ฐพ์ ์ ์์์ ๋ํ๋
๋๋ค. ์ด ์ฝ๋๋ ์๋ชป๋ URL๋ก ์ ๊ทผํ์ ๋ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
5xx (์๋ฒ ์ค๋ฅ, Server Error Responses)
- 500 Internal Server Error : ์๋ฒ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ ๋ํ๋
๋๋ค. ์๋ฒ ์ธก ๋ฌธ์ ๋ก ์ธํ ์คํจ์
๋๋ค.
- 502 Bad Gateway : ์๋ฒ๊ฐ ๊ฒ์ดํธ์จ์ด ๋๋ ํ๋ก์ ์ญํ ์ ํ ๋, ์์ ์๋ฒ๋ก๋ถํฐ ์๋ชป๋ ์๋ต์ ๋ฐ์์์ ๋ํ๋
๋๋ค.
- 503 Service Unavailable : ์๋ฒ๊ฐ ์ผ์์ ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์์ ๋ํ๋
๋๋ค. ์๋ฒ๊ฐ ๊ณผ๋ถํ ์ํ์ด๊ฑฐ๋ ์ ์ง๋ณด์ ์ค ์ผ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค.
URL๊ณผ URI์ ์ฐจ์ด์
- URL (Uniform Resource Locator)๊ณผ URI (Uniform Resource Identifier)๋ ์น ์ฃผ์๋ฅผ ๋ํ๋ด๋ ๊ฐ๋
์ด์ง๋ง, ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ชจ๋ URL์ URI์ ํ์ ๊ฐ๋
์ด์ง๋ง, ๋ชจ๋ URI๊ฐ URL์ธ ๊ฒ์ ์๋๋๋ค.
- ์ ์ : URI๋ ์ธํฐ๋ท์์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ด์
๋๋ค. URI๋ ๋ฆฌ์์ค๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ฑฐ๋์์น๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
- ์ข
๋ฅ :
- URL (Uniform Resources Locator) : ๋ฆฌ์์ค์ ์์น๋ฅผ ๋ช
์ํฉ๋๋ค. ์:
http://www.example.com
- URN (Uniform Resources Name) : ๋ฆฌ์์ค๋ฅผ ์ด๋ฆ์ผ๋ก ์๋ณํฉ๋๋ค. ์:
urn:isbn:0451450523 (์ฑ
์ ISBN ๋ฒํธ)
- ํน์ง :
- URI๋ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ธฐ ์ํ ๊ด๋ฒ์ํ ๊ฐ๋
์
๋๋ค. URL๊ณผ URN์ด URI์ ๋ ๊ฐ์ง ์ฃผ์ ํ์ ์งํฉ์
๋๋ค.
- URI๋ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ฐ๋์ ํฌํจํ์ง ์์ ์ ์์ต๋๋ค.
2. URL(Unifrom Resource Locator)
- ์ ์ : URL์ ์ธํฐ๋ท ์์ ๋ฆฌ์์ค์ ์์น๋ฅผ ์ง์ ํ๋ URI์ ํ์ ์งํฉ์
๋๋ค. URL์ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ๊ฒฝ๋ก๋ฅผ ํฌํจํ๋ฉฐ, ํ๋กํ ์ฝ(์:
http, https), ๋๋ฉ์ธ ์ด๋ฆ(์: www.examle.com), ๊ฒฝ๋ก(์: /index.html), ํฌํธ ๋ฒํธ(์: :80), ์ฟผ๋ฆฌ ๋ฌธ์์ด ๋ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ํน์ง :
- URL์ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ํ์ํ ๊ฒฝ๋ก์ ๋ฐฉ๋ฒ์ ๋ช
์ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด,
https://www.example.com:80/index.html?user=1์ ํ๋กํ ์ฝ, ๋๋ฉ์ผ, ํฌํธ, ๊ฒฝ๋ก, ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ํฌํจํ URL์
๋๋ค.
๐ HTTP์ ๋ณด์ ์ทจ์ฝ์
1. ๋์ฒญ ๊ฐ๋ฅ์ฑ
- HTTP๋ ํ๋ฌธ์ผ๋ก ํต์ ํ๊ธฐ ๋๋ฌธ์ ๋์ฒญ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HTTPS๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ์์ฒด๋ฅผ ์ํธํํ ์ ์์ต๋๋ค. HTTPS๋ SSL/TLS ํ๋กํ ์ฝ์ ์ถ๊ฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ฏ๋ก, ์ 3์๊ฐ ํต์ ๋ด์ฉ์ ๋์ฒญํ๋๋ผ๋ ๊ทธ ๋ด์ฉ์ ํด๋
ํ ์ ์์ต๋๋ค.
- ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ์๊ฐ ๋ณตํธํํ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
2. ์์ฅ ๊ฐ๋ฅ์ฑ
- HTTP๋ ํต์ ์๋๋ฅผ ํ์ธํ์ง ์๊ธฐ ๋๋ฌธ์ ์
์์ ์ธ ์ฌ์ฉ์๊ฐ ์ค๊ฐ์์ ํต์ ์ ๊ฐ๋ก์ฑ๊ฑฐ๋ ์์ ์ ์์ฅํ์ฌ ์ฌ์ฉ์๋ฅผ ์์ผ ์ ์์ต๋๋ค.
- HTTPS๋ SSL/TLS ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ ์์ ๊ฒ์ฆํฉ๋๋ค. ์ด ์ธ์ฆ์๋ ์ ๋ขฐํ ์ ์๋ ๊ธฐ๊ด(CA, ์ธ์ฆ ๊ธฐ๊ด)์ด ๋ฐ๊ธํ๋ฉฐ, ์ฌ์ฉ์๋ ์ด ์ธ์ฆ์๋ฅผ ํตํด ํต์ ์๋๋ฐฉ์ด ์ ๋ขฐํ ์ ์๋ ์๋ฒ์ธ์ง ํ์ธํ ์ ์์ต๋๋ค.
3. ๋ณ์กฐ ๊ฐ๋ฅ์ฑ
- HTTP๋ ๋ฐ์ดํฐ์ ์์ ์ฑ(๋ฌด๊ฒฐ์ฑ)์ ๋ณด์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ณ์กฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- HTTPS๋ ๋ฉ์์ง ์ธ์ฆ ์ฝ๋(MAC)๋ ์ ์ ์๋ช
๋ฑ์ ํตํด ๋ณ์กฐ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๐ HTTPS๋ ๋ฌด์์ธ๊ฐ?
HTTPS(HyperText Transfer Protocol Secure)๋ ์ธํฐ๋ท ์์์ ์ ๋ณด๋ฅผ ์ํธํํ๋ SSL/TLS ํ๋กํ ์ฝ์ ์ฌ์ฉํด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์์ ์ฃผ๊ณ ๋ฐ๋ ํต์ ๊ท์ฝ์
๋๋ค. HTTPS๋ ํ
์คํธ๋ฅผ ์ํธํํ์ฌ ์ ์กํ๋ฉฐ, ๊ณต๊ฐํค ์ํธํ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
๐ HTTPS ํต์ ํ๋ฆ
-
๊ณต๊ฐํค์ ๊ฐ์ธํค ์์ฑ: ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ(A)๋ฅผ ๋ง๋๋ ๊ธฐ์
์ HTTPS๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ๊ณต๊ฐํค์ ๊ฐ์ธํค๋ฅผ ์์ฑํฉ๋๋ค.
-
CA ๊ธฐ์
๊ณผ ๊ณ์ฝ: ์ ๋ขฐํ ์ ์๋ CA ๊ธฐ์
์ ์ ํํ๊ณ , ๊ทธ ๊ธฐ์
์๊ฒ ๊ณต๊ฐํค ๊ด๋ฆฌ๋ฅผ ๋ถํํ๋ฉฐ ๊ณ์ฝ์ ์ฒด๊ฒฐํฉ๋๋ค.
CA๋? : Certificate Authority๋ก, ๊ณต๊ฐํค๋ฅผ ์ ์ฅํด์ฃผ๋ ์ ๋ขฐ์ฑ์ด ๊ฒ์ฆ๋ ๋ฏผ๊ฐ๊ธฐ์
์ ์๋ฏธํฉ๋๋ค.
-
์ธ์ฆ์ ๋ฐ๊ธ: CA ๊ธฐ์
์ ํด๋น ๊ธฐ์
์ ์ด๋ฆ, A์๋ฒ ๊ณต๊ฐํค, ๊ณต๊ฐํค ์ํธํ ๋ฐฉ๋ฒ์ ๋ด์ ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ , CA ๊ธฐ์
์ ๊ฐ์ธํค๋ก ์ด๋ฅผ ์ํธํ(์๋ช
)ํ์ฌ A์๋ฒ์ ์ ๊ณตํฉ๋๋ค.
-
์ธ์ฆ์ ์ ๋ฌ: A์๋ฒ๋ ์ํธํ๋ ์ธ์ฆ์๋ฅผ ๋ณด์ ํ๊ฒ ๋๋ฉฐ, ์ด์ A์๋ฒ๋ ์์ ์ ๊ณต๊ฐํค๋ก ์ํธํ๋ HTTPS ์์ฒญ์ด ์๋ ์์ฒญ์ด ์ค๋ฉด, ์ด ์ํธํ๋ ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
-
์ธ์ฆ์ ํ์ธ: ํด๋ผ์ด์ธํธ๊ฐ main.html ํ์ผ์ A์๋ฒ์ ์์ฒญํ์ ๋, HTTPS ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ CA ๊ธฐ์
์ด A์๋ฒ์ ์ ๋ณด๋ฅผ CA ๊ธฐ์
์ ๊ฐ์ธํค๋ก ์ํธํํ ์ธ์ฆ์๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค.
- CA ๊ธฐ์
์ ๊ณต๊ฐํค๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฏธ ์๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด ๊ณต๊ฐํค๋ฅผ ์ฌ์ฉํด ์ธ์ฆ์๋ฅผ ํด๋
ํ๊ณ A์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ์ป์ต๋๋ค. ์ด ๊ณผ์ ์์ ์๋ช
์ ํ์ธํ์ฌ A์๋ฒ์ ์ ๋ขฐ์ฑ์ ๊ฒ์ฆํฉ๋๋ค.
-
๋์นญํค ์ํธํ: ํด๋ผ์ด์ธํธ๋ A์๋ฒ์ HandShaking ๊ณผ์ ์์ ์ฃผ๊ณ ๋ฐ์ ๋์๋ฅผ ์กฐํฉํ์ฌ pre-master-secret-key๋ฅผ ์์ฑํ ๋ค, A์๋ฒ์ ๊ณต๊ฐํค๋ก ํด๋น ๋์นญํค๋ฅผ ์ํธํํ์ฌ ์๋ฒ๋ก ๋ณด๋
๋๋ค.
-
๋์นญํค ๋ณตํธํ: A์๋ฒ๋ ์ํธํ๋ ๋์นญํค๋ฅผ ์์ ์ ๊ฐ์ธํค๋ก ๋ณตํธํํ์ฌ ํด๋ผ์ด์ธํธ์ ๋์ผํ ๋์นญํค๋ฅผ ํ๋ํฉ๋๋ค.
-
master-secret-key ์์ฑ: ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๊ฐ๊ฐ pre-master-secret-key๋ฅผ ์ฌ์ฉํ์ฌ master-secret-key๋ฅผ ์์ฑํฉ๋๋ค. ๋์ผํ ํค๋ฅผ ์ฌ์ฉํด ํ์คํ๋ ๋ฐฉ์์ผ๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋์ผํ master-secret-key๊ฐ ์์ฑ๋ฉ๋๋ค.
-
session-key ์์ฑ ๋ฐ ํต์ : master-secret-key๋ฅผ ํตํด session-key๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ์ด์ฉํด ๋์นญํค ๋ฐฉ์์ผ๋ก ํต์ ํฉ๋๋ค. ์ด๋, ๋์ผํ ํค๋ฅผ ์ฌ์ฉํ์ฌ session-key๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ํค๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํต์ ๋์ ์ํธํ ํ ์ ๋ฌ ๋ฐ ๋ณตํธํ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค.
-
์ธ์
์ข
๋ฃ: ๊ฐ ํต์ ์ด ์ข
๋ฃ๋ ๋๋ง๋ค session-key๋ฅผ ํ๊ธฐํฉ๋๋ค.
๐จ HTTPS์ ์ฃผ์์
HTTPS๋ผ๊ณ ํด์ ๋ฌด์กฐ๊ฑด ์์ ํ ๊ฒ์ ์๋๋๋ค. ์ ๋ขฐ๋ฐ์ CA ๊ธฐ์
์ด ์๋ ์์ฒด ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ์์ "์ฃผ์ ์ํจ", "์์ ํ์ง ์์ ์ฌ์ดํธ"์ ๊ฐ์ ์๋ฆผ์ ํ์ํด ์ฃผ์๋ฅผ ํ๊ธฐ์ํต๋๋ค.
HTTP์ ๋ฐ์ ํ๋ฆ
1. HTTP 0.9
- ๊ธฐ๋ณธ ๊ฐ๋
: HTTP์ ์ต์ด ๋ฒ์ ์ผ๋ก, ๋งค์ฐ ๋จ์ํ ํ๋กํ ์ฝ์
๋๋ค.
- ํน์ง :
- ํ
์คํธ ๊ธฐ๋ฐ : ์ค์ง HTML ํ์ผ๋ง ์ ์ก ๊ฐ๋ฅ.
- GET ๋ฉ์๋๋ง ์ง์ : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ ํ, HTML ๋ฌธ์๋ฅผ ์์ ํ๊ณ ๋ฐ๋ก ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋จ.
- ํค๋ ์์ : ์ํ ์ฝ๋, ์ฝํ
์ธ ์ ํ ๋ฑ์ ์ ๋ณด๊ฐ ์์.
- ํ๊ณ : ๋ค๋ฅธ ํ์ผ ํ์ ์ ์ก ๋ถ๊ฐ, ๋งค์ฐ ์ ํ์ ๊ธฐ๋ฅ.
2. HTTP 1.0
- ๊ธฐ๋ณธ ๊ฐ๋
: ์น์ ์์
์ ๋ฐ์ ๊ณผ ํจ๊ป ์ฌ์ฉ๋ ๋ฒ์ ์ผ๋ก, ํ์ฌ์ ์ ์ฌํ HTTP ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถค.
- ํน์ง :
- ํค๋ ๋์
: ์์ฒญ๊ณผ ์๋ต์ HTTP ํค๋๊ฐ ์ถ๊ฐ๋์ด, ์ํ ์ฝ๋, ์ฝํ
์ธ ์ ํ ๋ฑ์ ํฌํจ.
- ๋ค์ํ ๋ฉ์๋ : GET ์ธ์ POST, HEAD ๋ฉ์๋ ๋์
- ๋จ์ผ ์ฐ๊ฒฐ : ์์ฒญ๋น ํ๋์ TCP ์ฐ๊ฒฐ์ ์ฌ์ฉํ๊ณ , ์๋ต ํ ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋จ.
- ํ๊ณ : ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋๋ง๋ค ์๋ก์ด ์ฐ๊ฒฐ์ ์ค์ ํด์ผ ํ๋ฏ๋ก ๋นํจ์จ์
3. HTTP 1.1
- ๊ธฐ๋ณธ ๊ฐ๋
: HTTP์ ํ์คํ๋ ๋ฒ์ ์ผ๋ก, ์ค๋๋ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฒ์ .
- ํน์ง :
- ์ง์ ์ฐ๊ฒฐ(Persistent Connections) : ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ์ฌ, ํ๋์ ์ฐ๊ฒฐ์์ ์ฌ๋ฌ ์์ฒญ/์๋ต์ ์ฒ๋ฆฌ ๊ฐ๋ฅ.
- ํ์ดํ๋ผ์ด๋(Pipelining) : ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฌ๋ฌ ์์ฒญ์ ๋ณด๋ผ ์ ์์(๊ทธ๋ฌ๋ ์ค์ฌ์ฉ์์ ๋ฌธ์ ๋ฐ์์ผ๋ก ๋นํ์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์).
- ํธ์คํธ ํค๋ ํ๋(Host Header Field) : HTTP์ ์์ฒญ ๋ฉ์์ง์์ ์๋ฒ์ ํธ์คํธ๋ช
(๋๋ฉ์ธ ๋ช
๋๋ IP ์ฃผ์)์ ์ง์ ํ๋ ํ๋๋ก ํ๋์ ์๋ฒ๊ฐ ์ฌ๋ฌ ์น์ฌ์ดํธ๋ฅผ ํธ์คํ
ํ ๋ ์ด๋ค ์น์ฌ์ดํธ์ ๋ํ ์์ฒญ์ธ์ง ์๋ฒ๊ฐ ์ ์ ์๊ฒ ํด์ฃผ๋ ์ญํ .
- ์บ์ฑ ๋ฐ ์์ถ : ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ ์ก์ ์ํด ์บ์ฑ๊ณผ ์ฝํ
์ธ ์์ถ ์ง์
- ํ๊ณ : ํ์ดํ๋ผ์ด๋์ ๋นํจ์จ์ฑ๊ณผ HOLB(Head-of-Line Blocking) ๋ฌธ์ ๋ก ์ธํด ๋ค์์ ๋ฆฌ์์ค ์์ฒญ ์ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ.
- HOLB : HTTP 1.1์์ ํ์ดํ๋ผ์ด๋์ ์ฌ์ฉํ ๋, ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฌ ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ๋ณด๋ด๋ฉด, ์ฒซ ๋ฒ์งธ ์์ฒญ์ ์๋ต์ด ์ง์ฐ๋ ๊ฒฝ์ฐ ๋ค๋ฐ๋ฅด๋ ๋ชจ๋ ์์ฒญ์ ์๋ต๋ ํจ๊ป ์ง์ฐ.
4. HTTP 2.0
- ๊ธฐ๋ณธ ๊ฐ๋
: HTTP 1.1์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅ, ์น ์ฑ๋ฅ์ ๋ํญ ํฅ์์ํด
- ํน์ง :
- ์ด์ง ํ๋ ์ด๋ฐ(Binary Framing) : ๋ฐ์ดํฐ๋ฅผ ์ด์ง ํ์์ผ๋ก ์ ์กํ์ฌ, ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ ์ก๊ณผ ์ฒ๋ฆฌ.
- ๋ฉํฐํ๋ ์ฑ(Multiplexing) : ํ๋์ ์ฐ๊ฒฐ์์ ์ฌ๋ฌ ์์ฒญ/์๋ต์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ์ฌ HOLB ๋ฌธ์ ํด๊ฒฐ
- ํค๋ ์์ถ : ํค๋ ์ ๋ณด๋ฅผ ์์ถํ์ฌ ๋คํธ์ํฌ ๋ถํ ๊ฐ์(HPACK)
- ์๋ฒ ํธ์(Server Push) : ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์์ด๋ ๊ด๋ จ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ์ ์ก ๊ฐ๋ฅ
- ํ๊ณ : TCP ๊ธฐ๋ฐ์ด๋ฏ๋ก ์ฌ์ ํ TCP์ ์ ์ฝ(TCP ์ฐ๊ฒฐ ์ค์ ๋น์ฉ, ํผ์ก ์ ์ด ๋ฑ)์ด ์กด์ฌ
5. HTTP 3.0
- ๊ธฐ๋ณธ ๊ฐ๋
: QUIC(Quick UDP Internet Protocol) ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ต์ HTTP ๋ฒ์ , ๊ธฐ์กด์ TCP ๊ธฐ๋ฐ ๋ฌธ์ ๋ฅผ ๊ทน๋ณต.
- ํน์ง :
- QUIC ํ๋กํ ์ฝ : TCP ๋์ UDP ๊ธฐ๋ฐ QUIC์ ์ฌ์ฉ, ๋ ๋น ๋ฅธ ์ฐ๊ฒฐ ์ค์ ๊ณผ ๋ฐ์ดํฐ ์ ์ก.
- ์คํธ๋ฆผ ๋
๋ฆฝ์ฑ : ๊ฐ ์คํธ๋ฆผ์ด ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด, HOLB ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐ.
- ๋ด์ฅ๋ ๋ณด์ : TLS 1.3์ ๊ธฐ๋ณธ์ผ๋ก ํตํฉํ์ฌ, ๋น ๋ฅด๊ณ ์์ ํ ์ฐ๊ฒฐ ์ ๊ณต.
- ํ๊ณ : ์์ง ๋๋ฆฌ ์ฑํ๋์ง ์์์ผ๋ฉฐ, ์ผ๋ถ ๋คํธ์ํฌ ํ๊ฒฝ์์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์์.
QUIC(Quick UDP Internet Protocol)
QUIC(Quick UDP Internet Connections) ๋ ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ๋ก, ๊ธฐ์กด์ TCP(Transmission Control Protocol)์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , HTTP/3์ ๊ธฐ๋ฐ์ด ๋๋ ์๋ก์ด ํ๋กํ ์ฝ์
๋๋ค. QUIC์ ์ ์ก ๊ณ์ธต์์ ๋์ํ๋ฉฐ, ์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ง์ ์๋์ ๋ณด์์ ํฅ์์ํค๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค.
QUIC์ ์ฃผ์ ํน์ง
-
UDP ๊ธฐ๋ฐ:
- QUIC์ TCP ๋์ UDP(User Datagram Protocol) ์์์ ๋์ํฉ๋๋ค. UDP๋ ์ฐ๊ฒฐ ์ค์ ์ ํ์๋ก ํ์ง ์๋ ๋จ์ํ ์ ์ก ํ๋กํ ์ฝ๋ก, TCP๋ณด๋ค ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค. QUIC์ UDP์ ์ฅ์ ์ ํ์ฉํ๋ฉด์, TCP์ ๊ธฐ๋ฅ๊ณผ ๋ณด์์ฑ์ ์ถ๊ฐํ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
-
๋น ๋ฅธ ์ฐ๊ฒฐ ์ค์ :
- TCP๋ ์ฐ๊ฒฐ ์ค์ ์ ์ํด 3-way ํธ๋์
ฐ์ดํฌ๋ฅผ ํ์๋ก ํ๋ฉฐ, TLS(Transport Layer Security)๋ฅผ ์ถ๊ฐํ๋ฉด ์ด ๊ณผ์ ์ด ๋ ๋ณต์กํด์ง๋๋ค.๋ฐ๋ฉด QUIC์ ์ฐ๊ฒฐ ์ค์ ์ด ํ์ํ์ง ์์ UDP๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ ์ค์ ๊ณผ TLS ํธ๋์
ฐ์ดํฌ๋ฅผ ํ๋์ ๋จ๊ณ๋ก ํตํฉํ์ฌ, ํ ๋ฒ์ ์๋ณต(Round-Trip Time, RTT) ๋ง์ ์ฐ๊ฒฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ์ฒ์ ์ฐ๊ฒฐํ ๋์ ์ง์ฐ์ ํฌ๊ฒ ์ค์
๋๋ค.
-
๋ด์ฅ๋ ๋ณด์:
- QUIC์ TLS 1.3์ ํ๋กํ ์ฝ ์์ฒด์ ๋ด์ฅํ์ฌ, ๋ฐ์ดํฐ ์ ์ก์ ๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ก ์ธํด ๋ณ๋์ ๋ณด์ ๊ณ์ธต์ด ํ์ํ์ง ์์ผ๋ฉฐ, ๋ณด์ ์ค์ ์ด ๊ฐ์ํ๋ฉ๋๋ค.
-
์คํธ๋ฆผ ๋
๋ฆฝ์ฑ:
- QUIC์ ์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ ๋จ์ผ ์ฐ๊ฒฐ์์ ๋
๋ฆฝ์ ์ผ๋ก ์ ์กํ ์ ์์ต๋๋ค. TCP์์๋ ํ๋์ ํจํท์ด ์์ค๋๋ฉด ์ ์ฒด ์ฐ๊ฒฐ์ด ์ง์ฐ๋๋ HOLB(Head-of-Line Blocking) ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ, QUIC์ UDP ์์์ ๊ตฌํ๋์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ฐ ์คํธ๋ฆผ์ ๋ค๋ฅธ ์คํธ๋ฆผ์ ์์ค์ด๋ ์ง์ฐ์ ์ํฅ์ ๋ฐ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
-
์ฐ๊ฒฐ ์ ์ง ๊ธฐ๋ฅ:
- IP ์ฃผ์์ ํฌํธ ๋ฒํธ์ ๊ฐํ๊ฒ ์์กดํ์ฌ ๋คํธ์ํฌ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ฐ๊ฒฐ์ด ๋๊ธฐ๊ณ , ์ ์ฐ๊ฒฐ์ ์ค์ ํด์ผ ํ๋ TCP์๋ ๋ค๋ฅด๊ฒ QUIC์ ๋คํธ์ํฌ๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋(์: Wi-Fi์์ LTE๋ก ์ ํ) ์ฐ๊ฒฐ์ ์ ์งํ ์ ์์ต๋๋ค. ์ด๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์ ํนํ ์ ์ฉํ๋ฉฐ, ์ฐ๊ฒฐ์ด ๋์ด์ง์ง ์๊ณ ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๊ฒ ํฉ๋๋ค.
-
์์ค ๋ณต๊ตฌ:
- QUIC์ TCP์ ํผ์ก ์ ์ด๋ ํจํท ์์ค ๋ณต๊ตฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ ํ์ฌ, ํจํท ์์ค์ด ๋ฐ์ํ์ ๋ ๋ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ํผ์ก ์ํฉ์์๋ ์์ ์ ์ธ ์ฑ๋ฅ์ ์ ์งํฉ๋๋ค.
-
ํ๋กํ ์ฝ ํ์ฅ์ฑ๊ณผ ์
๋ฐ์ดํธ:
- TCP๋ ๋๋ถ๋ถ ์ด์์ฒด์ ์ ์ปค๋์์ ๊ตฌํ๋์ด ์์ด, ํ๋กํ ์ฝ ๊ฐ์ ์ด๋ ์
๋ฐ์ดํธ๊ฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ฉด, QUIC์ UDP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ์ฌ์ฉ์ ๊ณต๊ฐ(user space)์์ ๊ตฌํ๋๋ฏ๋ก, ํ๋กํ ์ฝ์ ๊ฐ์ ์ด๋ ํ์ฅ์ด ์๋์ ์ผ๋ก ์ฝ๊ณ ๋น ๋ฆ
๋๋ค. ์ด๋ฅผ ํตํด ์๋ก์ด ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ๋์
ํ๊ณ , ๋ณํํ๋ ์๊ตฌ์ ๋ง์ถฐ ํ๋กํ ์ฝ์ ์งํ์ํฌ ์ ์์ต๋๋ค.
QUIC์ ๋จ์ ๋ฐ ๋์ ๊ณผ์
- UDP ๊ธฐ๋ฐ์ ํ๊ณ: ์ผ๋ถ ๋คํธ์ํฌ ๋ฐฉํ๋ฒฝ์ด๋ ์ค๊ฐ ์ฅ์น์์ UDP ํธ๋ํฝ์ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ QUIC์ด ์ด๋ฌํ ํ๊ฒฝ์์ ์ ์๋ํ์ง ์์ ์ ์๋ค๋ ์๋ฏธ์
๋๋ค.
- ์๋ก์ด ํ๋กํ ์ฝ: QUIC์ ๋น๊ต์ ์๋ก์ด ํ๋กํ ์ฝ์ด๋ฏ๋ก, ๋ชจ๋ ๋คํธ์ํฌ ์ฅ๋น์ ์ํํธ์จ์ด๊ฐ ์ด๋ฅผ ์์ ํ ์ง์ํ์ง ์์ ์ ์์ต๋๋ค.
HTTP์์์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ์ ์ ์ก ๋ฐฉ์
- MIME ํ์
์ ํตํ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ ์ก
- MIME(Multipurpose Internet Mail Extensions)๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋, ๋ฐ์ดํฐ์ ํ์๊ณผ ๋ด์ฉ์ ๋ช
ํํ ์ ์ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. HTTP ์์ฒญ์ด๋ ์๋ต์์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋,
Content-Type ํค๋์ MIME ํ์
์ ๋ช
์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ์ ์ก๋๋ ๋ฐ์ดํฐ์ ์ ํ์ ์ดํดํ๊ณ , ์ด๋ฅผ ์ ์ ํ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฉํฐํํธ ํผ ๋ฐ์ดํฐ(multipart/form-data)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ํ์ผ์ ์
๋ก๋ํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
multipart/form-data ํ์์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ์ ํ
์คํธ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์ ์กํ ์ ์๋ ๋ฐฉ์์ผ๋ก, ํ์ผ ์
๋ก๋ ์ HTTP POST ์์ฒญ์ ๋ณธ๋ฌธ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํฉ๋๋ค.
- Base64 ์ธ์ฝ๋ฉ
- ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํ
์คํธ ํ์์ผ๋ก ๋ณํํ๋ ๋ฐฉ์์
๋๋ค. ์ฃผ๋ก ํ
์คํธ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ ์ก์์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ผ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด JSON์ด๋ XML๋ก ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด ์ ์กํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ธ์ฝ๋ฉ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์ฝ๊ฐ ์ฆ๊ฐํ์ง๋ง ๋คํธ์ํฌ ์ ์ก์ ์์ ์ฑ์ ๋์
๋๋ค.
- HTTPS๋ฅผ ํตํ ๋ณด์ ์ ์ก
- HTTPS๋ HTTP์ SSL/TLS ์ํธํ ๊ณ์ธต์ ์ถ๊ฐํ ํ๋กํ ์ฝ๋ก, ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ๋ชจ๋ ์ ์ก ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๊ฐ ์ ์ก ์ค์ ๋์ฒญ์ด๋ ๋ณ์กฐ๋๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ, ์์ ํ ํต์ ์ ๋ณด์ฅํฉ๋๋ค.
HTTP์ ์์ผ ํต์ ๋น๊ต
1. ์์ผ ํต์
์์ผ ํต์ ์ ๋คํธ์ํฌ ์์ ๋ ๋
ธ๋ ๊ฐ์ ์ง์ ์ ์ธ ์ฐ๊ฒฐ์ ์ค์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ ์ ์์ค์ ๋ฐฉ์์
๋๋ค.
- ํจ์จ์ฑ
- ์์ผ ํต์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ง์ ์ ์ด๊ณ ๋น ๋ฅธ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ถํ์ํ ํค๋๋ ํ๋กํ ์ฝ ๋ ๋น์ ์ถ๊ฐ ์ฒ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋คํธ์ํฌ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
(์: ์จ๋ผ์ธ ๊ฒ์, VolP)์์ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ ๋น ๋ฅธ ์๋ต ์๊ฐ๊ณผ ๋ฎ์ ์ง์ฐ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ์ ๋งค์ฐ ์ ๋ฆฌํฉ๋๋ค.
- ์ ์ฐ์ฑ
- ์์ผ ํต์ ์ ๋คํธ์ํฌ ํต์ ์ ์ธ๋ถ์ฌํญ์ ๋ ๋ง์ด ์ ์ดํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ํ์, ํ๋กํ ์ฝ, ์ ์ก ๋ฐฉ์ ๋ฑ์ ์ง์ ์ค๊ณํ ์ ์๊ธฐ ๋๋ฌธ์, ํน์ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
- ๋ณต์ก์ฑ
- ์์ผ ํต์ ์ ์ ์์ค์ ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์ ์๊ตฌํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฐ๊ฒฐ ๊ด๋ฆฌ, ๋ฐ์ดํฐ ํ๋ฆ ์ ์ด, ์ค๋ฅ ์ฒ๋ฆฌ ๋ฑ์ ์ง์ ๊ตฌํํด์ผ ํ๋ฏ๋ก, ๋ณต์ก์ฑ์ด ๋์์ง ์ ์์ต๋๋ค.
2. HTTP
HTTP๋ ์น์์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ๊ณ ์์ค์ ํ๋กํ ์ฝ๋ก, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ ๊ด๋ฆฌํฉ๋๋ค.
- ํ์คํ ๋ฐ ํธํ์ฑ
- HTTP๋ ์ ์ธ๊ณ์ ์ผ๋ก ํ์คํ๋ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์, ์น ๋ธ๋ผ์ฐ์ , ์๋ฒ, API ๋ฑ ๋ค์ํ ํ๋ซํผ์์ ๊ด๋ฒ์ํ๊ฒ ์ง์๋ฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์์คํ
๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํ๊ณ ์ธํฐ๋ท ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋ ํ์์ ์
๋๋ค.
- RESTful API์ ๊ฐ์ ์น ์๋น์ค๋ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
- **๋ณด์ (HTTPS)
- HTTPS๋ HTTP์ SSL/TLS ์ํธํ๋ฅผ ์ถ๊ฐํ์ฌ, ๋ฐ์ดํฐ ์ ์ก์ ๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ธํฐ๋ท์ ํตํด ์์ ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค.
- ๋ณด์์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์
(์: ์จ๋ผ์ธ ์ผํ, ๊ธ์ต ์๋น์ค)์์๋ HTTPS๊ฐ ํ์์ ์
๋๋ค.
- ์บ์ฑ ๋ฐ ํ๋ก์ ์ง์
- HTTP๋ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ํตํด ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๊ณ , ํด๋ผ์ด์ธํธ์ ์๋ต ์๋๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค์ด๊ณ , ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
- ๋ํ, HTTP๋ ํ๋ก์ ์๋ฒ๋ฅผ ํตํ ์ค๊ณ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ง์ํ์ฌ, ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ ๋ฆฌํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ตฌํ ์ฉ์ด์ฑ
- HTTP๋ ๊ณ ์์ค์ ์ถ์ํ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๋ค์ด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ๋ ์์ํฌ๊ฐ HTTP ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ณต์กํ ๋คํธ์ํฌ ๊ด๋ฆฌ ์์ด ๊ฐ๋จํ ์์ฒญ/์๋ต ๋ชจ๋ธ์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ฟ ํค, ์ธ์
, ํ ํฐ์ ์ฐจ์ด
์ฟ ํค, ์ธ์
, ๊ทธ๋ฆฌ๊ณ ํ ํฐ์ ์น ์ดํ๋ฆฌ์ผ์ด์
์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ๊ฑฐ๋ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ธ ๊ฐ์ง ์ฃผ์ ๊ฐ๋
์
๋๋ค.
1. ์ฟ ํค (Cookie)
- ์ ์
- ์ฟ ํค๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ํด ์ฌ์ฉ์์ ๋ก์ปฌ ์ฅ์น์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ ํ์ผ์
๋๋ค. ์ฟ ํค๋ ์ฃผ๋ก ์ฌ์ฉ์ ์๋ณ ์ ๋ณด, ์ธ์
ID, ์ฌ์ฉ์ ์ค์ ๋ฑ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง
- ์ ์ฅ ์์น : ํด๋ผ์ด์ธํธ ์ธก(์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ )์์ ๊ด๋ฆฌ๋๋ฉฐ, ์๋ฒ๊ฐ ์ฟ ํค๋ฅผ ์์ฑํ๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๋ฐ์ดํฐ ์๋ช
: ์ฟ ํค๋ ๋ง๋ฃ ๊ธฐ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ์ฟ ํค๋ ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค. ์๊ตฌ ์ฟ ํค์ ์ธ์
์ฟ ํค๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก : ์๋ ๋ก๊ทธ์ธ, ์ฌ์ฉ์ ์ค์ ์ ์ง(์: ๋คํฌ ๋ชจ๋ ์ค์ ), ๋ฐฉ๋ฌธ์ ์ถ์ ๋ฑ
- ๋ณด์ : ์ฟ ํค ์์ฒด๋ ์์ ํ์ง ์์ผ๋ฉฐ, ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉด ๋์ฒญ์ด๋ ์กฐ์์ ์ํ์ด ์์ต๋๋ค. HTTPS๋ฅผ ์ฌ์ฉํ์ฌ ์ ์กํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค.
2. ์ธ์
(Session)
- ์ ์
- ์ธ์
์ ์๋ฒ์์ ์ฌ์ฉ์๋ณ๋ก ๊ด๋ฆฌ๋๋ ์ผ์์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ์์
๋๋ค. ์ธ์
์ ์ฃผ๋ก ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ์ ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
- ํน์ง
- ์ ์ฅ ์์น : ์๋ฒ ์ธก์์ ๊ด๋ฆฌ๋๋ฉฐ, ํด๋ผ์ด์ธํธ๋ ์ธ์
ID๋ง์ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค๋ URL ํ๋ผ๋ฏธํฐ๋ก ์ ์ฅํฉ๋๋ค.
- ๋ฐ์ดํฐ ์๋ช
: ์ธ์
์ ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ฑฐ๋, ์๋ฒ๊ฐ ์ธ์
์ ๋ง๋ฃ์ํค๊ธฐ ์ ๊น์ง ์ ์ง๋ฉ๋๋ค. ์๋ฒ ์์์ ์ฌ์ฉํ๋ฏ๋ก, ์ธ์
์ ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์งง๊ฒ ์ค์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก : ์ฌ์ฉ์ ์ธ์ฆ ์ํ ์ ์ง, ์ฅ๋ฐ๊ตฌ๋ ์ ๋ณด ์ ์ฅ, ์ฌ์ฉ์ ๋ง์ถคํ ์ ๋ณด ๊ด๋ฆฌ ๋ฑ
- ๋ณด์ : ์ธ์
๋ฐ์ดํฐ๋ ์๋ฒ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ์์ ํ์ง๋ง, ์ธ์
ID๊ฐ ์ ์ถ๋๋ฉด ์ธ์
ํ์ด์ฌํน ๊ณต๊ฒฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
3. ํ ํฐ (Token)
- ์ ์ : ํ ํฐ์ ์ฃผ๋ก ์ฌ์ฉ์ ์ธ์ฆ์ ์ํด ์ฌ์ฉ๋๋ ์ํธํ๋ ๋ฌธ์์ด์
๋๋ค. JWT(JSon Web Token)์ ๊ฐ์ ํ ํฐ์ ์ฌ์ฉ์์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง
- ์ ์ฅ ์์น : ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ ์ธก(๋ธ๋ผ์ฐ์ ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๋๋ ์ธ์
์คํ ๋ฆฌ์ง)์ ์ ์ฅ๋์ง๋ง, ์๋ฒ์ ์ ์ฅํ ์๋ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์๋ช
: ํ ํฐ์๋ ์ ํจ ๊ธฐ๊ฐ์ด ์์ผ๋ฉฐ, ๋ง๋ฃ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ์๋ก์ด ํ ํฐ์ ๋ฐ์์ผ ํฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก : API ์ธ์ฆ, OAuth ์ธ์ฆ, ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ํต์ ๋ฑ
- ๋ณด์ : ํ ํฐ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ช
๋๊ฑฐ๋ ์ํธํ๋์ด ์์ด, ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํ์ง๋ง ํ ํฐ ์์ฒด๊ฐ ์ ์ถ๋๋ฉด ๋ณด์ ์ํ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ธ์
๊ธฐ๋ฐ ์ธ์ฆ vs ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ
-
์ธ์
๊ธฐ๋ฐ ์ธ์ฆ
- ์ ์ : ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด ์๋ฒ๊ฐ ์ฌ์ฉ์์ ๋ํ ์ธ์
์ ์์ฑํ๊ณ , ํด๋ผ์ด์ธํธ์ ์ธ์
ID๋ฅผ ๋ฐ๊ธํ์ฌ ์ธ์
ID๋ฅผ ํตํด ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ ๋ฐฉ์์
๋๋ค.
- ์๋ ๋ฐฉ์ :
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด ์๋ฒ๋ ๊ณ ์ ํ ์ธ์
ID๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ์๋ฒ ์ธก์ ์ธ์
์ ์ฅ์์ ์ ์ฅํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ด ์ธ์
ID๋ฅผ ์ฟ ํค์ ์ ์ฅํ์ฌ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค ํจ๊ป ์ ์กํฉ๋๋ค.
- ์๋ฒ๋ ์์ฒญ์์ ๋ฐ์ ์ธ์
ID๋ฅผ ํ์ธํ๊ณ ์ ์ฅ๋ ์ธ์
์ ๋ณด์ ๋์กฐํ์ฌ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํฉ๋๋ค.
- ํน์ง :
- ์๋ฒ์ ์ํ ์ ์ฅ : ์ธ์
์ ์๋ฒ ์ธก์ ์ ์ฅ๋๋ฉฐ ์๋ฒ๋ ์ธ์
์ํ๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ฒ๋ ๋ชจ๋ ์ฌ์ฉ์์ ๋ํ ์ธ์
์ ๋ณด๋ฅผ ์ ์งํด์ผ ํ๋ฉฐ, ์ด๋ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ ์๋ชจํฉ๋๋ค.
- ๋ณด์์ฑ : ์ธ์
ID๊ฐ ํด๋ผ์ด์ธํธ์ ์ฟ ๊ธฐ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์, ์ฟ ํค์ ๋ณด์ ์ค์ ์ด ์ค์ํฉ๋๋ค. ์ธ์
ํ์ด์ฌํน ๊ณต๊ฒฉ์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ๋ณด์์ ๊ฐํํ๋ ๋ค์ํ ๊ธฐ๋ฒ์ด ํ์ํฉ๋๋ค.
- ์ค์ผ์ผ๋ง ๋ฌธ์ : ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ ์๋ฒ์ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ธ์
๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
- ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ด ์ ํฉํ ๊ฒฝ์ฐ
- ๋จ์ผ ์๋ฒ์์์ ์ ํ๋ฆฌ์ผ์ด์
: ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ ์๋ฒ๊ฐ ์ธ์
์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์, ํ๋์ ์๋ฒ์์ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํฉํฉ๋๋ค. ์ธ์
๋ฐ์ดํฐ๋ฅผ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋์ ๋ณด์ ์๊ตฌ ์ฌํญ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์
: ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ ๋ชจ๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ ๋ฆฌํฉ๋๋ค. ์๋ฒ๊ฐ ๋ชจ๋ ์ธ์
๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก, ํด๋ผ์ด์ธํธ ์ธก์ ๋ณด์์ ๋ํ ์์กด๋๊ฐ ์ค์ด๋ญ๋๋ค.
- ์งง์ ์ฌ์ฉ์ ์ธ์
: ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์์ํ๊ฑฐ๋ ์ธ์
์ด ๋ง๋ฃ๋๋ฉด ์ธ์
์ ์ข
๋ฃํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์งง์ ์ธ์
์ง์ ์๊ฐ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์
์์๋ ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ด ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
-
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ
- ์ ์ : ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด ์๋ฒ๊ฐ ์ํธํ๋ ํ ํฐ(JWT๋ฑ)์ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๊ณ , ์ดํ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ ๋ ์ด ํ ํฐ์ ์ฌ์ฉํด ์ธ์ฆํ๋ ๋ฐฉ์์
๋๋ค.
- ์๋ ๋ฐฉ์ :
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด ์๋ฒ๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ํฌํจํ JWT(JSON Web Token)์ ๊ฐ์ ํ ํฐ์ ์์ฑํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ด ํ ํฐ์ ๋ก์ปฌ ์ ์ฅ์๋ ์ฟ ํค์ ์ ์ฅํ๊ณ , ์ดํ ์์ฒญ ์ ํค๋์ ํฌํจํ์ฌ ์๋ฒ์ ์ ์กํฉ๋๋ค.
- ์๋ฒ๋ ํ ํฐ์ ๋ฐ์ ๊ฒ์ฆํ๊ณ , ํ ํฐ์ ํฌํจ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ฌ์ฉ์๋ฅผ ์ธ์ฆํฉ๋๋ค. ์๋ฒ๋ ์ํ๋ฅผ ์ ์ฅํ์ง ์๊ณ ํ ํฐ ์์ฒด๋ฅผ ๊ฒ์ฆํ์ฌ ์ธ์ฆ์ ์ํํฉ๋๋ค.
- ํน์ง :
- ๋ฌด์ํ : ์๋ฒ๋ ์ฌ์ฉ์์ ์ํ๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค. ํ ํฐ ์์ฒด๊ฐ ๋ชจ๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์๋ฒ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค. ์ด๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์์ ์ ๋ฆฌํฉ๋๋ค.
- ๋ณด์์ฑ : ํ ํฐ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ช
๋๊ฑฐ๋ ์ํธํ๋์ด ์์ด, ํด๋ผ์ด์ธํธ์์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ ํจ์ฑ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ ํฐ์ด ์ ์ถ๋๋ฉด ๋ฌธ์ ๊ฐ ๋ ์ ์์ผ๋ฏ๋ก, ํ ํฌ๋์ด ์๋ช
๊ด๋ฆฌ์ ๋ณด์์ ์ ์ํด์ผ ํฉ๋๋ค.
- ํ์ฅ์ฑ : ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์๋ฒ ๊ฐ ์ํ๋ฅผ ๊ณต์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ ์๋ฒ์์ ๋์ผํ ์ธ์ฆ ๋ฐฉ์์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค.
- ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ด ์ ํฉํ ๊ฒฝ์ฐ
- ๋ถ์ฐ ์์คํ
๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ : ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์๋ฒ๊ฐ ์ํ๋ฅผ ์ ์งํ์ง ์๋ ๋ฌด์ํ ์ธ์ฆ ๋ฐฉ์์ด๋ฏ๋ก, ์ฌ๋ฌ ์๋ฒ ๊ฐ์ ์ํ๋ฅผ ๋๊ธฐํํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ํนํ ์ ๋ฆฌํฉ๋๋ค. ์๋ฒ ํ์ฅ์ด ์ฉ์ดํ๊ณ , ๋ก๋ ๋ฐธ๋ฐ์ฑ์๋ ์ ํฉํฉ๋๋ค.
- API ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์
: ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก๋ถํฐ JWT์ ๊ฐ์ ํ ํฐ์ ๋ฐ์ ์์ฒญ์ ํฌํจ์์ผ ์ธ์ฆํ๋ ๋ฐฉ์์ด๋ฏ๋ก, API๋ฅผ ํตํด ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ํต์ ํ ๋ ์ ํฉํฉ๋๋ค. ํ ํฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๊ด๋ฆฌํ๋ฏ๋ก, ์๋ฒ์ ๋ถ๋ด์ด ์ค์ด๋ค๊ณ ๋ค์ํ ํด๋ผ์ด์ธํธ ๊ฐ์ ํธํ์ฑ์ด ๋์์ง๋๋ค.
- ํ์ฅ์ฑ ๋ฐ ์ฑ๋ฅ์ด ์ค์ํ ๊ฒฝ์ฐ : ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์๋ฒ๊ฐ ์ํ๋ฅผ ์ ์งํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ์๋ฒ์ ์์ ์๋ชจ๋ฅผ ์ค์ด๊ณ ํ์ฅ์ฑ์ด ๋์ ์์คํ
์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ ๋๊ท๋ชจ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๊ฐ์ง ์๋น์ค๋ ๊ณ ์ฑ๋ฅ์ด ์๊ตฌ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํฉํฉ๋๋ค.
- ๋จ๊ธฐ ์ธ์ฆ๊ณผ ๋ก๊ทธ์์ ๋ถํ์ํ ์์คํ
: ํน์ ์์
์ด๋ ์งง์ ์๊ฐ ๋์๋ง ์ธ์ฆ์ด ํ์ํ ์์คํ
์์ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ด ์ ํฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ธ์ฆ ํ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ํ ํฐ์ด ์๋์ผ๋ก ๋ง๋ฃ๋๋ฏ๋ก, ์ถ๊ฐ์ ์ธ ๋ก๊ทธ์์ ์ฒ๋ฆฌ๊ฐ ํ์ํ์ง ใ
๋ณ์ต๋๋ค.
์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์ ๋จ์
- ์๋ฒ ์ธก ์ํ ์ ์ง๋ก ์ธํ ์์ ์๋ชจ
- ์ธ์
๊ด๋ฆฌ : ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์์๋ ์๋ฒ๊ฐ ๊ฐ ์ฌ์ฉ์์ ์ํ๋ฅผ ์ธ์
์ผ๋ก ์ ์งํฉ๋๋ค. ์ด๋ฅผ ์ํด ์๋ฒ๋ ์ธ์
ID์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋ง์์ง์๋ก ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง์ด ์๋ชจํ๊ฒ ๋ฉ๋๋ค.
- ์์ ๋ถ์กฑ : ๋ง์ ์ฌ์ฉ์์๊ฒ ์๋น์คํ๋ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์
์์๋ ์ธ์
๋ฐ์ดํฐ๊ฐ ๊ธ๊ฒฉํ ์ฆ๊ฐํ์ฌ ์๋ฒ ์์์ด ๋ถ์กฑํด์ง ์ ์์ต๋๋ค.
- ์๋ฒ ํ์ฅ์ฑ ๋ฌธ์
-
์ธ์
๋๊ธฐํ : ์ฌ๋ฌ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๋ถ์ฐ ํ๊ฒฝ์์๋ ์ธ์
๋๊ธฐํ๊ฐ ํ์ํ๋น๋ค. ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์๋ฒ๋ก ๋ฆฌ๋๋ ์
๋ ๊ฒฝ์ฐ, ๊ฐ ์๋ฒ๊ฐ ๋์ผํ ์ธ์
์ ๋ณด๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ธ์
์คํ ๋ฆฌ์ง๋ฅผ ์ค์ํํ๊ฑฐ๋ ์ธ์
์ ๊ณต์ ํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํ์ง๋ง, ์ด๋ ์ถ๊ฐ์ ์ธ ๋ณต์ก์ฑ๊ณผ ๋น์ฉ์ ๋ฐ์์ํฌ ์ ์์ต๋๋ค.
-
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ ์ฝ : ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํตํด ์๋ฒ ๊ฐ์ ๋ถํ๋ฅผ ๋ถ์ฐ์ํค๋ ๊ฒฝ์ฐ, ํน์ ์๋ฒ์ ์ธ์
์ด ๊ณ ์ (sticky)๋๋ฉด ๋ถํ ๋ถ์ฐ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ ์ ์์ต๋๋ค.
- ๋ณด์ ๋ฌธ์
-
์ธ์
ํ์ด์ฌํน : ํด๋ผ์ด์ธํธ ์ธก์์ ์ธ์
ID๊ฐ ์ ์ถ๋๋ฉด, ๊ณต๊ฒฉ์๋ ํด๋น ์ธ์
์ ๋์ฉํ์ฌ ๋ถ๋ฒ์ ์ธ ์์ธ์ค๋ฅผ ํ ์ ์์ต๋๋ค. ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ์์๋ ์ด์ ๊ฐ์ ๊ณต๊ฒฉ์ ๋๋นํ ์ถ๊ฐ์ ์ธ ๋ณด์์กฐ์น๊ฐ ํ์ํฉ๋๋ค.
-
์ธ์
๋ง๋ฃ : ์ธ์
์ด ๋ง๋ฃ๋๊ธฐ ์ ์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์์์ ํ์ง ์์ผ๋ฉด, ์ฌ์ฉ์์ ์ธ์
์ด ๋จ์ ์์ ์ ์์ด ๋ณด์ ์ทจ์ฝ์ ์ด ๋ ์ ์์ต๋๋ค.
- ๋ณต์กํ ๊ด๋ฆฌ
-
์ธ์
๋ง๋ฃ์ ๋ก๊ทธ์์ ์ฒ๋ฆฌ : ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์์ํ๊ฑฐ๋ ์ธ์
์ด ๋ง๋ฃ๋๋ฉด, ์๋ฒ์์ ํด๋น ์ธ์
์ ์ฌ๋ฐ๋ฅด๊ฒ ์ญ์ ํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ด ์ ๋๋ก ๊ด๋ฆฌ๋์ง ์์ผ๋ฉด, ์์ฌ ์ธ์
๋ฐ์ดํฐ๊ฐ ์๋ฒ์ ๋จ์ ์์์ ๋ถํ์ํ๊ฒ ์๋ชจํ ์ ์์ต๋๋ค.
-
์ธ์
๊ด๋ฆฌ ๋ณต์ก์ฑ : ๋ค์์ ์ฌ์ฉ์๊ฐ ๋์ ์ ์ํ๋ ํ๊ฒฝ์์๋ ์ธ์
๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง ์ ์์ผ๋ฉฐ, ์ธ์
๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ถ๊ฐ์ ์ธ ์ธํ๋ผ๊ฐ ํ์ํฉ๋๋ค.
JWT (JSON Web Token)๋?
JWT (JSON Web Token)๋ ์ฃผ๋ก ์ฌ์ฉ์ ์ธ์ฆ๊ณผ ์ ๋ณด ๊ตํ์ ์ํด ์ฌ์ฉ๋๋ ๊ฐ๋ฐฉํ ํ์ค์
๋๋ค. JWT๋ JSON ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ ๋ณด(Claims)๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํด ์ค๊ณ๋ ์ํธํ๋ ํ ํฐ์
๋๋ค. JWT๋ ์ฃผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ์ธ์
๊ด๋ฆฌ๋ฅผ ๋์ฒดํ๊ฑฐ๋, API ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
JWT์ ๊ตฌ์กฐ
- Header
- ํค๋๋ ํ ํฐ ํ์
(JWT)๊ณผ ์ฌ์ฉํ ์๋ช
์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค.
- Payload
- ํ์ด๋ก๋๋ ํด๋ ์์ด๋ผ๊ณ ํ๋ ์ ๋ณด ์กฐ๊ฐ์ ํฌํจํฉ๋๋ค. ์ด ํด๋ ์์ ์ฌ์ฉ์ ์ ๋ณด, ๋ง๋ฃ ์๊ฐ, ๋ฐํ์ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจ์ํฌ ์ ์์ต๋๋ค.
- Signature
- ์๋ช
์ ํค๋์ ํ์ด๋ก๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ๋น๋ฐ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋ช
๋ฉ๋๋ค. ์ด๋ ํ ํฐ์ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
JWT์ ์ฅ์
- ๋ฌด์ํ(Stateful) ๋ฐ ๋ถ์ฐ ์์คํ
์์์ ์ฌ์ฉ
- JWT๋ ํด๋ผ์ด์ธํธ ์ธก์์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ฒ์ ํด๋น ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์, ์๋ฒ๊ฐ ์ฌ์ฉ์ ์ํ๋ฅผ ์ ์งํ์ง ์์๋ ๋ฉ๋๋ค. ์ด๋ ์ธ์
์ ์๋ฒ ์ธก์ ์ ์ฅํ์ง ์๋ ๋ถ์ฐ ์์คํ
์์ ํนํ ์ ์ฉํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ์๋ฒ์ ์ ์ํ๋ ํ๊ฒฝ(๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ)์์ JWT๋ ์ธ์
๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
- ๋ณด์์ฑ
- JWT๋ ์๋ช
(Signature)์ ํตํด ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์๋ช
๋ JWT๋ ํด๋ผ์ด์ธํธ์์ ์์๋ก ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์๋ฒ์์ ์๋ช
์ ๊ฒ์ฆํ์ฌ ์๋ณ์กฐ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- JWT๋ ์ํธํ๋ ์ํ๋ก ์ ์ก๋ ์ ์์ด, ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ์กํ ์ ์์ต๋๋ค. ๋ค๋ง, ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ๊ฐ๋ฅํ ํ ํ ํฐ์ ํฌํจํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ํ์ฅ์ฑ
- JWT๋ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ฉฐ, ํ์์ ๋ฐ๋ผ ๋ค์ํ ํด๋ ์์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์์ ๊ถํ์ด๋ ์ญํ ๋ฑ์ ํฌํจํ ์ ์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ๋ฟ๋ง ์๋๋ผ, ์๋ฒ ๊ฐ์ ํต์ ์๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
- ํธ๋ฆฌ์ฑ
- JWT๋ ํ์ค ํฌ๋งท์ผ๋ก ์ ์๋์ด ์์ด, ๋ค์ํ ํ๋ซํผ์์ ์ฝ๊ฒ ์ฌ์ฉํ๊ณ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ๋ ์์ํฌ์์ JWT๋ฅผ ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ์ฌ ๊ตฌํ์ด ์ฉ์ดํฉ๋๋ค.
- JWT๋ URL์ ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์ฟ ํค๋ HTTP ํค๋์์๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์์ฒด ํฌํจ(Self-Contained)
- JWT๋ ์ฌ์ฉ์์ ๋ชจ๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ์์ฒด์ ์ผ๋ก ํฌํจํ๋ฏ๋ก, ์๋ฒ๋ ์ถ๊ฐ์ ์ธ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ ํ์๊ฐ ์์ต๋๋ค. ์๋ฒ๋ ํ ํฐ์ ๊ฒ์ฆํ๋ ๊ฒ๋ง์ผ๋ก ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์์
- API ์ธ์ฆ : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋, JWT๋ฅผ HTTP ํค๋์ ํฌํจ์์ผ ์๋ฒ๊ฐ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ณ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
- Single Sign-On (SSO) : JWT๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ ์ธ์ฆ ์ํ๋ฅผ ๊ณต์ ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
RESTful API
RESTful API๋ ์น ์๋น์ค์ ์ค๊ณ ์์น ์ค ํ๋์ธ REST(Representational State Transfer) ์ํคํ
์ฒ ์คํ์ผ์ ๋ฐ๋ฅด๋ API์
๋๋ค. REST๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์ ๊ฐ๋จํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ ์์น์ด๋ฉฐ, ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
REST์ ๊ธฐ๋ณธ ์์น
- ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ช
ํํ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ฉฐ, ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ฒ๋ ์์ฒญ์ ๋ํ ์๋ต์ ํฉ๋๋ค. ์ด ๊ตฌ์กฐ๋ ๊ฐ๊ฐ์ ๋
๋ฆฝ์ฑ์ ๋ณด์ฅํ์ฌ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ๋ฌด์ํ(Stateless)
- ๋ชจ๋ ์์ฒญ์ ๋
๋ฆฝ์ ์ด๋ฉฐ, ์๋ฒ๋ ์์ฒญ ๊ฐ์ ์ํ๋ฅผ ์ ์งํ์ง ์์ต๋๋ค. ๊ฐ ์์ฒญ์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ด์ผ ํ๋ฉฐ, ์๋ฒ๋ ์์ฒญ์ ๋ฐ๊ณ ์๋ต์ ๋ณด๋ผ ๋ฟ, ์ด์ ์์ฒญ์ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ์์ต๋๋ค.
- ์บ์ ๊ฐ๋ฅ(Cacheable)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ ์๋ต์ ์บ์ฑํ ์ ์์ต๋๋ค. ์บ์๋ฅผ ํตํด ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ฒ๋ ์๋ต์ ์บ์ฑ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๋ช
์ํด์ผ ํฉ๋๋ค.
- ๊ณ์ธตํ๋ ์์คํ
(Layered System)
- ํด๋ผ์ด์ธํธ๋ ์ค๊ฐ์ ์ฌ๋ฌ ๊ณ์ธต์ด ์๋์ง ์ ์ ์์ต๋๋ค. ์ด๋ ๋ก๋ ๋ฐธ๋ฐ์, ํ๋ก์ ์๋ฒ, ๋ณด์ ๊ฒ์ดํธ์จ์ด ๋ฑ์ ํฌํจํ ๊ณ์ธตํ๋ ์์คํ
์ํคํ
์ฒ๋ฅผ ํ์ฉํฉ๋๋ค.
- ์ธํฐํ์ด์ค ์ผ๊ด์ฑ(Uniform Interface)
- RESTful ์์คํ
์ ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ฆ, URL์ ๋ฆฌ์์ค๋ฅผ ์ ํํ ์๋ณํ๊ณ , HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)๋ ํด๋น ๋ฆฌ์์ค์์ ์ํํ ์์
์ ์ ์ํฉ๋๋ค.
- ์ฝ๋ ์จ ๋๋งจ๋(Code on Demand) (์ ํ ์ฌํญ)
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ฝ๋(์: JavaScript)๋ฅผ ์ ์กํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์์ ์คํํ ์ ์์ต๋๋ค. ์ด๋ REST์์ ์ ํ์ ์ธ ์ ์ฝ ์ฌํญ์
๋๋ค.
RESTful API์ ๊ตฌ์ฑ ์์
- URI(Uniform Resource Identifier) : ๋ฆฌ์์ค(๋ฐ์ดํฐ)๋ฅผ ์๋ณํ๋ ๊ฒฝ๋ก
- HTTP ๋ฉ์๋
- GET / POST / PUT / PATCH / DELETE
- HTTP ์ํ ์ฝ๋ : ์์ฒญ์ ๋ํ ์๋ฒ์ ์๋ต ์ํ๋ฅผ ๋ํ๋. ์๋ฅผ ๋ค์ด, 200(์ฑ๊ณต), 404(๋ฆฌ์์ค ์์), 500(์๋ฒ ์ค๋ฅ) ๋ฑ์ด ์์ต๋๋ค.
RESTful API์ ์ฅ์
- ํ์ฅ์ฑ : ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ด ๋ถ๋ฆฌ๋์ด ์์ด ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
- ์ ์ฐ์ฑ : RESTful API๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์(JSON, XML ๋ฑ)์ ์ง์ํ ์ ์์ผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ํ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํฌ ์ ์์ต๋๋ค.
- ํ์คํ๋ ๊ตฌ์กฐ : ์ผ๊ด๋ ์ธํฐํ์ด์ค์ ๊ตฌ์กฐ๋ก ์ธํด, ๊ฐ๋ฐ์๋ค์ด API๋ฅผ ์ฝ๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋ฉ์ธ๊ณผ URL์ ์ฐจ์ด์
๋๋ฉ์ธ(Domain)๊ณผ URL(Uniform Resource Locator)์ ์น ์ฃผ์์ ๊ด๋ จ๋ ์ฉ์ด์ด์ง๋ง, ๊ทธ ์๋ฏธ์ ์ฉ๋๊ฐ ๋ค๋ฆ
๋๋ค.
1. ๋๋ฉ์ธ (Domain)
-
์ ์ : ๋๋ฉ์ธ์ ์ธํฐ๋ท์์ ์น์ฌ์ดํธ๋ฅผ ์๋ณํ๋ ์ด๋ฆ์
๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํน์ ์น์ฌ์ดํธ์ ์ ๊ทผํ ์ ์๋๋ก ๋์์ฃผ๋ ์ฃผ์ ์ญํ ์ ํฉ๋๋ค. ๋๋ฉ์ธ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋์๊ฒ ์ฝ๊ธฐ ์ฌ์ด ํํ๋ก ํํ๋๋ฉฐ, IP ์ฃผ์์ ๋์ฒด๋ฌผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
-
๊ตฌ์ฑ :
- ์ต์์ ๋๋ฉ์ธ(TLD, Top-Level Domain):
.com, .org, .net๊ณผ ๊ฐ์ ๋๋ฉ์ธ์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ๋ถ๋ถ
- ๋ ๋ฒ์งธ ์์ค ๋๋ฉ์ธ(SLD, Second-Level Domain):
example.com์์ example ๋ถ๋ถ.
- ์๋ธ๋๋ฉ์ธ(Subdomain):
blog.example.com์์ blog ๋ถ๋ถ
-
์ญํ : ๋๋ฉ์ธ์ ์น์ฌ์ดํธ์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์น ์ฌ์ดํธ์ IP ์ฃผ์๋ฅผ ์ฐพ์ ์ ์๋๋ก DNS(๋๋ฉ์ธ ๋ค์ ์์คํ
)์์ ์ฌ์ฉ๋ฉ๋๋ค.
-
์ ์: URL์ ์น ๋ธ๋ผ์ฐ์ ์์ ํน์ ๋ฆฌ์์ค(์นํ์ด์ง, ์ด๋ฏธ์ง, ๋์์ ๋ฑ)๋ฅผ ์ฐพ์ ์ ์๋ ์ ์ฒด ์ฃผ์์
๋๋ค. URL์ ๋๋ฉ์ธ ์ด๋ฆ๋ฟ๋ง ์๋๋ผ, ํ๋กํ ์ฝ, ๊ฒฝ๋ก, ํฌํธ ๋ฒํธ, ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ ๋ฑ์ ํฌํจํฉ๋๋ค.
-
๊ตฌ์ฑ ์์ :
- ํ๋กํ ์ฝ :
http://์ ๊ฐ์ด ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ.
- ๋๋ฉ์ธ ์ด๋ฆ :
www.example.com์ ๊ฐ์ด ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ ์๋ฒ์ ์ฃผ์
- ๊ฒฝ๋ก(Path):
/page1์ ๊ฐ์ด ์๋ฒ ๋ด์์ ํน์ ๋ฆฌ์์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ๋ก
- ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์:
?id=123์ ๊ฐ์ด ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์ ๋ฌํ๊ธฐ ์ํ ๋งค๊ฐ๋ณ์
-
์ญํ : URL์ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ, ์น ํ์ด์ง, ์ด๋ฏธ์ง, ํ์ผ ๋ฑ ๋ค์ํ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋๋ก ํด์ค๋๋ค.
CORS (Cross-Origin Resource Sharing)
CORS(Cross-Origin Resource Sharing)๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ค๋ฅธ ๋๋ฉ์ธ(์ถ์ฒ)์์ ์์์ ์์ฒญํ ์ ์๋๋ก ํ์ฉํ๋ ๋ณด์ ๊ธฐ๋ฅ์
๋๋ค. CORS๋ ์น ๋ณด์ ์ ์ฑ
์ธ ๋์ผ ์ถ์ฒ ์ ์ฑ
(Same-Origin Policy)์ ์ ์ฝ์ ์ํํ๊ธฐ ์ํด ๋์
๋์์ต๋๋ค.
1. ๋์ผ ์ถ์ฒ ์ ์ฑ
(Same-Origin Policy)
- ์ ์ : ๋์ผ ์ถ์ฒ ์ ์ฑ
์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด์์ ์ํด, ํ ์ถ์ฒ์์ ๋ก๋๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒ์ ์ ํํ๋ ๋ณด์ ์ ์ฑ
์
๋๋ค. ์ฌ๊ธฐ์ ์ถ์ฒ(Origin)๋ ๋๋ฉ์ธ, ํ๋กํ ์ฝ, ๊ทธ๋ฆฌ๊ณ ํฌํธ ๋ฒํธ๋ฅผ ํฌํจํฉ๋๋ค.
- ๋ฌธ์ ์ : ๋์ผ ์ถ์ฒ ์ ์ฑ
์ ๋ณด์์ ๊ฐํํ๋๋ฐ, API์ ๊ฐ์ด ๋ค์ํ ์ถ์ฒ์์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ์ ํ๋ฆฌ์ผ์ด์
์์๋ ์ ์ฝ์ด ๋ฉ๋๋ค.
2. CORS์ ์ญํ
- CORS๋ ์ด๋ฌํ ๋์ผ ์ถ์ฒ ์ ์ฑ
์ ์ ์ฝ์ ์ํํ์ฌ, ์๋ฒ๊ฐ ํน์ ์ถ์ฒ์์ ์ค๋ ์์ฒญ์ ํ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. CORS๋ ํด๋ผ์ด์ธํธ(์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ )๊ฐ ๋ค๋ฅธ ์ถ์ฒ์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋, ์๋ฒ๊ฐ ํ์ ํค๋(
Access-Control-Allow-Origin ๋ฑ)๋ฅผ ํตํด ์ด๋ค ์ถ์ฒ์์์ ์์ฒญ์ ํ์ฉํ ์ง๋ฅผ ๋ช
์ํ๊ฒ ๋ฉ๋๋ค.
3. CORS ๋์ ๋ฐฉ์
- ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ(Preflight Request): ๋ฏผ๊ฐํ ์์ฒญ(์: PUT, DELETE, ๋๋ ๋นํ์ค ํค๋๋ฅผ ์ฌ์ฉํ๋ ์์ฒญ)์ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๋ ๋จผ์ OPTIONS ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ๊ฐ ์ค์ ์์ฒญ์ ํ์ฉํ๋์ง ํ์ธํ๋ ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ์ ๋ณด๋
๋๋ค.
- ์ค์ ์์ฒญ(Simple Request): ์๋ฒ๊ฐ CORS๋ฅผ ํ์ฉํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์ค์ ์์ฒญ์ ๋ณด๋
๋๋ค. ์๋ฒ๋ ์๋ต์
Access-Control-Allow-Origin ํค๋๋ฅผ ํฌํจํ์ฌ ์์ฒญ ์ถ์ฒ๊ฐ ํ์ฉ๋์์์ ํด๋ผ์ด์ธํธ์ ์๋ฆฝ๋๋ค.
4. CORS์ ์ฅ์ ๊ณผ ์ฌ์ฉ ์ฌ๋ก
- ๋ณด์ ๊ฐํ : CORS๋ ๋ณด์์ ์ ์งํ๋ฉด์๋, ๋ค์ํ ์ถ์ฒ์์ ์์์ ์์ฒญํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ API ํธ์ถ, CDN ์ฌ์ฉ, ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ์๋น์ค์์ ํตํฉ์ ํ์์ ์
๋๋ค.
- REST API : ํด๋ผ์ด์ธํธ ์ธก
์ด ๊ธ์ ํตํด HTTP์ HTTPS์ ๊ธฐ๋ณธ ๊ฐ๋
๊ณผ ์๋ ์๋ฆฌ, ๊ทธ๋ฆฌ๊ณ HTTPS๊ฐ ์ด๋ป๊ฒ ๋ณด์์ ๊ฐํํ๋์ง์ ๋ํด ์ดํดํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๐๐