HTTP์ HTTPS๋ ์น ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)์ ์น ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํต์ ๊ท์ฝ์ ๋๋ค. ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ฐ์ดํฐ ์ํธํ ์ ๋ฌด์ด๋ฉฐ, HTTPS๋ HTTP์ ๋ณด์(Secure)์ด ์ถ๊ฐ๋ ๋ฒ์ ์ ๋๋ค.
- HTTP: ๋ฐ์ดํฐ๋ฅผ ์ํธํ ์์ด ๊ทธ๋๋ก ์ ์กํ๊ธฐ ๋๋ฌธ์, ๊ณต์ฉ ์์ดํ์ด๋ ๋คํธ์ํฌ ํ๊ฒฝ์์ ํด์ปค๊ฐ ํต์ ์ ์ฟ๋ฃ๊ฑฐ๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ํ์ทจํ ์ํ์ด ํฝ๋๋ค.
- HTTPS: SSL/TLS ๋ณด์ ์ธ์ฆ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํฉ๋๋ค. ๋ฐ๋ผ์ ์ 3์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก์ฑ๋๋ผ๋ ํด๋ ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ฐธ๊ณ : https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
HTTP and HTTPS are communication protocols used by web browsers (clients) and web servers to exchange data. The main difference between them is whether the data is encrypted. HTTPS is the secure version of HTTP.
- HTTP: Data is transmitted in plain text without encryption. Therefore, on public Wi-Fi or unsecured networks, attackers may eavesdrop on the communication or steal sensitive information.
- HTTPS: Data is encrypted using SSL/TLS certificates before transmission. As a result, even if a third party intercepts the data, it cannot be easily decrypted or read.
HTTP๋ OSI(Open Systems Interconnection) ๋คํธ์ํฌ ํต์ ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต ํ๋กํ ์ฝ์ ๋๋ค. HTTP๋ ์ฌ๋ฌ ์ ํ์ ์์ฒญ๊ณผ ์๋ต์ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์น ์ฌ์ดํธ์ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ค๋ ๊ฒฝ์ฐ HTTP GET ์์ฒญ์ ์ ์กํฉ๋๋ค. ์ฐ๋ฝ์ฒ ์์ ์์ฑ๊ณผ ๊ฐ์ ์ผ๋ถ ์ ๋ณด๋ฅผ ์ ์กํ๋ ค๋ ๊ฒฝ์ฐ HTTP PUT ์์ฒญ์ ์ ์กํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, ์๋ฒ๋ ์ซ์ ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ ์์์ผ๋ก ๋ค์ํ ์ ํ์ HTTP ์๋ต์ ์ ์กํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์์ ๋๋ค. ''' 200 - OK(์ ์) 400 - Bad request(์๋ชป๋ ์์ฒญ) 404 - Resource not found(๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์) ์ด๋ฌํ ์์ฒญ ๋ฐ ์๋ต ํต์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ๊ฐ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ์์ด๋ฏ๋ก World Wide Web์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ผ๊ด๋๊ฒ ์๋ํฉ๋๋ค. '''
HTTP๋ ์ํธํ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ์์ ์ ์ก๋ ์ ๋ณด๋ฅผ ์ 3์๊ฐ ๊ฐ๋ก์ฑ๊ณ ์ฝ์ ์ ์์ต๋๋ค. ์ด๋ ์ด์์ ์ธ ํ๋ก์ธ์ค๊ฐ ์๋์๊ธฐ ๋๋ฌธ์, ํต์ ์ ๋ ๋ค๋ฅธ ๋ณด์ ๊ณ์ธต์ ์ถ๊ฐํ๊ธฐ ์ํด HTTPS๋ก ํ์ฅ๋์์ต๋๋ค. HTTPS๋ HTTP ์์ฒญ ๋ฐ ์๋ต์ SSL ๋ฐ TLS ๊ธฐ์ ์ ๊ฒฐํฉํฉ๋๋ค.
HTTPS ์น ์ฌ์ดํธ๋ ๋ ๋ฆฝ๋ ์ธ์ฆ ๊ธฐ๊ด(CA)์์ SSL/TLS ์ธ์ฆ์๋ฅผ ํ๋ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์น ์ฌ์ดํธ๋ ์ ๋ขฐ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ ์ ๋ธ๋ผ์ฐ์ ์ ์ธ์ฆ์๋ฅผ ๊ณต์ ํฉ๋๋ค. SSL ์ธ์ฆ์๋ ์ํธํ ์ ๋ณด๋ ํฌํจํ๋ฏ๋ก ์๋ฒ์ ์น ๋ธ๋ผ์ฐ์ ๋ ์ํธํ๋ ๋ฐ์ดํฐ๋ ์คํฌ๋จ๋ธ๋ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์์ต๋๋ค. ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์ https:// URL ํ์์ ์ ๋ ฅํ์ฌ HTTPS ์น ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ SSL ์ธ์ฆ์๋ฅผ ์์ฒญํ์ฌ ์ฌ์ดํธ์ ์ ๋ขฐ์ฑ์ ๊ฒ์ฆํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์๋ฒ๋ ํผ๋ธ๋ฆญ ํค๊ฐ ํฌํจ๋ SSL ์ธ์ฆ์๋ฅผ ํ์ ์ผ๋ก ์ ์กํฉ๋๋ค. ์น ์ฌ์ดํธ์ SSL ์ธ์ฆ์๋ ์๋ฒ ์์ด๋ดํฐํฐ๋ฅผ ์ฆ๋ช ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ธ์ฆ๋๋ฉด, ๋ธ๋ผ์ฐ์ ๊ฐ ํผ๋ธ๋ฆญ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ฐ ์ธ์ ํค๊ฐ ํฌํจ๋ ๋ฉ์์ง๋ฅผ ์ํธํํ๊ณ ์ ์กํฉ๋๋ค. ์น ์๋ฒ๋ ํ๋ผ์ด๋น ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๋ฅผ ํด๋ ํ๊ณ ์ธ์ ํค๋ฅผ ๊ฒ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์, ์ธ์ ํค๋ฅผ ์ํธํํ๊ณ ๋ธ๋ผ์ฐ์ ์ ์น์ธ ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค. ์ด์ ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๋ชจ๋ ๋์ผํ ์ธ์ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๋ฅผ ์์ ํ๊ฒ ๊ตํํ๋๋ก ์ ํํฉ๋๋ค.
HTTPS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์๋ฒ์์ SSL/TLS ์ธ์ฆ์๋ฅผ ํ๋ํ๊ณ ์ ์ง ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ๊ณผ๊ฑฐ์๋ ๋๋ถ๋ถ์ ์ธ์ฆ ๊ธฐ๊ด์ด ์ธ์ฆ์ ๋ฑ๋ก ๋ฐ ์ ์ง ๊ด๋ฆฌ์ ๋ํด ์ฐ๊ฐ ์๊ธ์ ์ฒญ๊ตฌํ์ต๋๋ค. ํ์ง๋ง ์ด์ ๋ ๋ ์ด์ ๊ทธ๋ ์ง ์์ต๋๋ค.
๋ฌด๋ฃ SSL ์ธ์ฆ์๋ฅผ ํ๋ํ ์ ์๋ ๋ง์ ์ถ์ฒ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Amazon Web Services(AWS)์์๋ AWS Certificate Manager(ACM)๋ฅผ ์ ๊ณตํฉ๋๋ค. ACM์ AWS ์๋น์ค ๋ฐ ๋ด๋ถ ์ฐ๊ฒฐ ๋ฆฌ์์ค์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ํผ๋ธ๋ฆญ ๋ฐ ํ๋ผ์ด๋น SSL/TLS ์ธ์ฆ์๋ฅผ ํ๋ก๋น์ ๋, ๊ด๋ฆฌ ๋ฐ ๋ฐฐํฌํฉ๋๋ค. ACM์ SSL/TLS ์ธ์ฆ์๋ฅผ ๊ตฌ๋งค, ์ ๋ก๋ ๋ฐ ๊ฐฑ์ ํ๋ ์๊ฐ ์๋ชจ์ ์ธ ์๋ ํ๋ก์ธ์ค๋ฅผ ๋์ ์ฒ๋ฆฌํด์ค๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ(Request)์ ํ์ ๋, ๊ทธ ์์ฒญ์ ๋ง๋ ์๋ต(Response)์ ๋ณด๋ธ ํ ์ฐ๊ฒฐ์ ๋๋ ์ฒ๋ฆฌ๋ฐฉ์์ด๋ค.
HTTP 1.1 ๋ฒ์ ์์ ์ปค๋ฅ์ ์ ๊ณ์ ์ ์งํ๊ณ , ์์ฒญ(Request)์ ์ฌํ์ฉํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค. (HTTP Header)์ keep-alive ์ต์ ์ ์ฃผ์ด ์ปค๋ฅ์ ์ ์ฌํ์ฉํ๊ฒ ํ๋ค. HTTP 1.1 ๋ฒ์ ์์ ๋ํดํธ(default) ์ต์ ์ด๋ค. HTTP๊ฐ TCP์์์ ๊ตฌํ๋์๊ธฐ ๋๋ฌธ์(TCP : ์ฐ๊ฒฐ ์งํฅ, UDP : ๋น์ฐ๊ฒฐ ์งํฅ) ์ฐ๊ฒฐ ์งํฅ์ ์ด๋ผ๊ณ ํ ์ ์๋ค๋ ์๊ธฐ๊ฐ ์์ด ๋ ผ๋์ด ์์ง๋ง, ์์ง๊น์ง ๋คํธ์ํฌ ๊ด์ ์์ keep-alive๋ ์ต์ ์ผ๋ก ๋๊ณ , ์๋ฒ ์ธก์์ ๋น์ฐ๊ฒฐ ์งํฅ์ ์ธ ํน์ฑ์ผ๋ก ์ปค๋ฅ์ ๊ด๋ฆฌ์ ๋ํ ๋น์ฉ์ ์ค์ด๋ ๊ฒ์ด ๋ช ํํ ์ฅ์ ์ผ๋ก ๋ณด๊ธฐ ๋๋ฌธ์ ๋น์ฐ๊ฒฐ ์งํฅ์ผ๋ก ์์๋์๋ค.
์ปค๋ฅ์ ์ ๋๋ ์๊ฐ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ํต์ ์ด ๋๋๋ฉฐ ์ํ ์ ๋ณด๋ ์ ์งํ์ง ์๋ ํน์ฑ์ด ์๋ค.
ํด๋ผ์ด์ธํธ์ ์ฒซ ๋ฒ์งธ ํต์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ค ํด๋, ๋ ๋ฒ์งธ ํต์ ์์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ์ง ์๋๋ค. ํ์ง๋ง, ์ค์ ๋ก๋ ๋ฐ์ดํฐ ์ ์ง๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ ๋ณด๊ฐ ์ ์ง๋์ง ์์ผ๋ฉด, ๋งค๋ฒ ํ์ด์ง๋ฅผ ์ด๋ํ ๋๋ง๋ค ๋ก๊ทธ์ธ์ ๋ค์ ํ๊ฑฐ๋,์ํ์ ์ ํํ๋๋ฐ ๊ตฌ๋งค ํ์ด์ง์์ ์ ํํ ์ํ์ ์ ๋ณด๊ฐ ์๊ฑฐ๋ ํ๋ ๋ฑ์ ์ผ์ด ๋ฐ์ํ ์ ์๋ค. โ ๋ฐ๋ผ์, Stateful ๊ฒฝ์ฐ๋ฅผ ๋์ฒํ๊ธฐ ์ํด ์ฟ ํค์ ์ธ์ ์ ์ฌ์ฉํ๋ค. ์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด์ ์ ํฌ๊ฒ ์ํ ์ ๋ณด์ ์ ์ฅ ์์น์ด๋ค. ์ฟ ํค๋ 'ํด๋ผ์ด์ธํธ(=๋ก์ปฌ PC)'์ ์ ์ฅํ๊ณ , ์ธ์ ์ '์๋ฒ'์ ์ ์ฅํ๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ํต์ ์ ํ ๋ ํต์ ์ด ์ฐ์์ ์ผ๋ก ์ด์ด์ง์ง ์๊ณ ํ ๋ฒ ํต์ ์ด ๋๋ฉด ๋์ด์ง๋ค. ๋ฐ๋ผ์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋๊ตฌ์ธ์ง ๊ณ์ ์ธ์ฆ์ ํด์ค์ผ ํ๋ค. ํ์ง๋ง ๊ทธ๊ฒ์ ๋งค์ฐ ๊ท์ฐฎ๊ณ ๋ฒ๊ฑฐ๋ก์ด ์ผ์ด๋ค. ๊ทธ๋ฐ ๋ฒ๊ฑฐ๋ก์์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ์ฟ ํค์ ์ธ์ ์ด๋ค. ์ถ์ฒ: https://dev-coco.tistory.com/61 [์ฌ๊ธฐ๋ก์ด ๊ฐ๋ฐ์ํ:ํฐ์คํ ๋ฆฌ]
HTTP ์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ(Request)์ ๋ํด ์๋ฒ๊ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ฃผ๋ 3์๋ฆฌ ์ซ์ ์ฝ๋์ด๋ค.
ํด๋ผ์ด์ธํธ๋ ์ํ ์ฝ๋๋ฅผ ํตํด ์์ฒญ์ด ์ฑ๊ณตํ๋์ง, ์ธ์ฆ์ ์คํจํ๋์ง, ์๋ชป๋ ์์ฒญ์ธ์ง, ์๋ฒ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ๋ฑ์ ํ์ธํ ์ ์๋ค.
์์:
GET /users/1HTTP/1.1 200 OK์ ์๋ต์ ์๋ฒ๊ฐ ์์ฒญ์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ์์ ์๋ฏธํ๋ค.
| ๋ฒ์ | ์๋ฏธ |
|---|---|
| 1xx | ์ ๋ณด ์๋ต |
| 2xx | ์ฑ๊ณต |
| 3xx | ๋ฆฌ๋ค์ด๋ ํธ |
| 4xx | ํด๋ผ์ด์ธํธ ์ค๋ฅ |
| 5xx | ์๋ฒ ์ค๋ฅ |
์กฐํ ์ฑ๊ณต
GET /users/1
โ 200 OK์์ฑ ์ฑ๊ณต
POST /users
โ 201 Created์ฑ๊ณตํ์ง๋ง ์๋ต Body ์์
DELETE /users/1
โ 204 No Content์๊ตฌ ์ด๋
- URL์ด ์๊ตฌ์ ์ผ๋ก ๋ณ๊ฒฝ๋จ
์์ ์ด๋
- URL์ด ์ผ์์ ์ผ๋ก ๋ณ๊ฒฝ๋จ
์๋ชป๋ ์์ฒญ
ํ์ ํ๋ผ๋ฏธํฐ ๋๋ฝ
์๋ชป๋ ์์ฒญ ํ์
์ธ์ฆ ์คํจ
JWT ์์
JWT ๋ง๋ฃ
์ธ์ฆ(Authentication) ๋ฌธ์
๊ถํ ์์
์ผ๋ฐ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์ API ํธ์ถ
์ธ์ฆ์ ๋์์ง๋ง ๊ถํ(Authorization)์ด ์์
๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์
์กด์ฌํ์ง ์๋ ํ์
์กด์ฌํ์ง ์๋ API
ํ์ฌ ์ํ์ ์ถฉ๋
์ค๋ณต ์ด๋ฉ์ผ ๊ฐ์
์ด๋ฏธ ์ฒ๋ฆฌ๋ ์ฃผ๋ฌธ
์์ฒญ ํ์์ ๋ง์ง๋ง ๋น์ฆ๋์ค ๊ฒ์ฆ ์คํจ
๋น๋ฐ๋ฒํธ ๊ธธ์ด ๋ถ์กฑ
์ด๋ฉ์ผ ํ์ ์ค๋ฅ
400
์์ฒญ ์์ฒด๊ฐ ์๋ชป๋จ
422
์์ฒญ ํ์์ ๋ง์
๋น์ฆ๋์ค ๊ท์น ์๋ฐ
์์ฒญ ๊ณผ๋ค
Rate Limit ์ด๊ณผ
์๋ฒ ๋ด๋ถ ์ค๋ฅ
์์ํ์ง ๋ชปํ ์์ธ
DB ์ค๋ฅ
์๋ฒ ๊ฐ ํต์ ์คํจ
Nginx โ API ์๋ฒ ์ค๋ฅ
์ผ์์ ์ผ๋ก ์๋น์ค ๋ถ๊ฐ
์๋ฒ ์ ๊ฒ
์๋ฒ ๊ณผ๋ถํ
์๋ฒ ๊ฐ ํต์ ์๊ฐ ์ด๊ณผ
์ธ๋ถ API ์๋ต ์ง์ฐ
401
- ์ธ์ฆ ์คํจ
- ๋ก๊ทธ์ธ ํ์
403
- ์ธ์ฆ ์ฑ๊ณต
- ๊ถํ ์์
400
- ์์ฒญ ์์ฒด๊ฐ ์๋ชป๋จ
422
- ์์ฒญ ํ์์ ๋ง์
- ๋น์ฆ๋์ค ๊ฒ์ฆ ์คํจ
500
- ์๋ฒ ์ฝ๋ ๋ฌธ์
503
- ์๋ฒ๋ ์ ์
- ์ ๊ฒ ๋๋ ๊ณผ๋ถํ
-
200 OK
-
201 Created
-
204 No Content
-
400 Bad Request
-
401 Unauthorized
-
403 Forbidden
-
404 Not Found
-
409 Conflict
-
422 Unprocessable Entity
-
429 Too Many Requests
-
500 Internal Server Error
-
502 Bad Gateway
-
503 Service Unavailable
-
504 Gateway Timeout