<h1><center> HTTP </center></h1>
###### tags: `๐ป TIL`, `Computer Science`, `Network`, `HTTP`
###### date: `2024-02-01T15:12:33.284Z`
> [color=#724cd1][name=๋ฐ๋ฆญ]
> [HTTP - ์ํค๋ฐฑ๊ณผ](https://ko.wikipedia.org/wiki/HTTP)
> [HTTP](https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/)
## HTTP
ํ์ดํผํ
์คํธ ์ ์ก ํ๋กํ ์ฝ์ ์๋ ์์ด๋ ์น์ ํ ๋์ด๋ฉฐ ํ์ดํ
์คํธ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ๋ก๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. HTTP๋ ๋คํธ์ํฌ ์ฅ์น ๊ฐ์ ์ ๋ณด๋ฅผ ์ ์กํ๋๋ก ์ค๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต ํ๋กํ ์ฝ์ด๋ฉฐ ๋คํธ์ํฌ ํ๋กํ ์ฝ ์คํ์ ๋ค๋ฅธ ๊ณ์ธต ์์์ ์คํ๋๋ค. HTTP๋ฅผ ํตํ ์ผ๋ฐ์ ์ธ ํ๋ฆ์๋ ํด๋ผ์ด์ธํธ ์์คํ
์์ ์๋ฒ์ ์์ฒญํ ๋ค์ ์๋ฒ์์ ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์์
์ด ํฌํจ๋๋ค.
### HTTP Method
HTTP Method๋ HTTP Request๊ฐ ์ฟผ๋ฆฌ๋ ์๋ฒ์์ ๊ธฐ๋ํ๋ ์์
์ ๋ํ๋ธ๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๋ฉ์๋๋ GET,POST๊ฐ ์๋ค. GET์ ์๋ต์ผ๋ก ์ ๋ณด๋ฅผ ๊ธฐ๋ํ๋ ๋ฐ๋ฉด, POST์์ฒญ์ ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์น ์๋ฒ์ ์ ๋ณด๋ฅผ ์ ์ถํ๊ณ ์์์ ๋ํ๋ธ๋ค.
### HTTP Header

> Google Chrome์ ๋คํธ์ํฌ ํญ์ ์๋ HTTP Request Header ์์
HTTP Header์๋ ํค์ ๊ฐ์ ์ ์ฅ๋ ํ
์คํธ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ํค๋๋ ๋ชจ๋ HTTP Request(or Response)์ ํฌํจ๋๋ค. ์ด๋ฌํ ํค๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ๋ธ๋ผ์ฐ์ ๋ฐ ์์ฒญ๋๋ ๋ฐ์ดํฐ์ ๊ฐ์ ํต์ฌ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
### HTTP Request์๋ ๋ฌด์์ด ๋ค์ด์๋?
HTTP Request๋ ์น ๋ธ๋ผ์ฐ์ ์ ๊ฐ์ ์ธํฐ๋ท ํต์ ํ๋ซํผ์์ ์น ์ฌ์ดํธ๋ฅผ ๋ก๋ํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ Requestํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ธํฐ๋ท์ ํตํด ์ด๋ฃจ์ด์ง ๊ฐ HTTP์์ฒญ์ ์๋ก ๋ค๋ฅธ ์ ํ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์ผ๋ จ์ ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค. ์ผ๋ฐ์ ์ธ HTTP์์ฒญ์๋ ๋ค์์ด ํฌํจ๋๋ค.
1. HTTP ๋ฒ์ ์ ํ
2. URL
3. HTTP Method
4. HTTP Request Header
5. (Optional) HTTP Body
### HTTP Request Body์๋ ๋ฌด์์ด ์์๊น?
Request์ Body๋ Request์์ ์ ์ก๋๋ ์ ๋ณด์ Body๋ฅผ ํฌํจํ๋ ๋ถ๋ถ์ด๋ค. HTTP Request์ ๋ณธ๋ฌธ์๋ ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ ๋๋ ์์์ ์
๋ ฅ๋ ๊ธฐํ ๋ฐ์ดํฐ์ ๊ฐ์ด ์น ์๋ฒ์ ์ ์ถ๋๋ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
### HTTP Response์๋ ๋ฌด์์ด ์๋?
HTTP Response๋ ์น ํด๋ผ์ด์ธํธ(์ข
์ข
๋ธ๋ผ์ฐ์ )์์ HTTP Request์ ๋ํ Response๋ก ์ธํฐ๋ท ์๋ฒ๋ก๋ถํฐ ์์ ํ๋ Response์ด๋ค.
HTTP Response์๋ ๋ค์์ด ํฌํจ๋๋ค.
- HTTP Status code
- HTTP Response Header
- (Optional) HTTP Body
### HTTP Response Header
HTTP Request์ ๋ง์ฐฌ๊ฐ์ง๋ก HTTP Response์๋ ์๋ต ๋ณธ๋ฌธ์์ ์ ์ก๋๋ ๋ฐ์ดํฐ์ ์ธ์ด ๋ฐ ํ์๊ณผ ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ํค๋๊ฐ ํจ๊ป ์ ๊ณต๋๋ค.

> Google Chrome ๋คํธ์ํฌ ํญ์ ์๋ HTTP Response Header์ ์์
### HTTP Response Body์๋ ๋ฌด์์ด ์์๊น?
GET ์์ฒญ์ ๋ํ ์ฑ๊ณต์ ์ธ HTTP Response์๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฒญ๋ ์ ๋ณด๊ฐ ํฌํจ๋ Body๊ฐ ์๋ค. ๋๋ถ๋ถ์ ์น ์์ฒญ์ ๊ฒฝ์ฐ ์ด๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์น ํ์ด์ง๋ก ๋ณํ๋๋ HTML ๋ฐ์ดํฐ๋ค.
### HTTP Status Code
HTTP ์ํ ์ฝ๋๋ HTTP Request๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ฐ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ 3์๋ฆฌ ์ฝ๋์ด๋ค. ์ํ ์ฝ๋๋ 5๊ฐ์ ๋ธ๋ก์ผ๋ก ๋๋๋ค.
- 1xx informational
- 2xx Success
- 3xx Redirection
- 4xx Client Error
- 5xx Server Error
`xx`๋ 00~99 ์ฌ์ด์ ๋ค๋ฅธ ์ซ์๋ฅผ ๋ํ๋ธ๋ค.
### HTTPS
> HyperText Transfer Protocol Secure๋ HTTP์ ์์ ํ ๋ฒ์ ์ด๋ค. SSL(Secure Socket Layer) ๋๋ TLS(Transport Layer Security)๋ผ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ ์ก๋๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํ ํ๋ค.
- ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ์ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ณ์กฐ๋ ์ํ์ ์ค์ฌ์ค๋ค. ๋ํ, ๋ฐ์ดํฐ๊ฐ ์ํธํ๋๊ธฐ ๋๋ฌธ์ ๋์ฒญ์ ํตํ ๋ฐ์ดํฐ ์ ์ถ์ ์ํ๋ ๊ฐ์์ํจ๋ค.
- ๋์งํธ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ ์์ ์ธ์ฆํ๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์๋ํ ์๋ฒ์ ํต์ ํ๊ณ ์์์ ๋ณด์ฅํ๋ค.
- ๋๋ถ๋ถ์ ์น ๋ธ๋ผ์ฐ์ ๋ HTTPS๋ก ๋ณดํธ๋๋ ์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ ๋ ์๋ฌผ์ ์์ด์ฝ์ ํ์ํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ ์ฐ๊ฒฐ์์ ์๋ฆฐ๋ค.
### HTTP vs HTTPS
- ๋ณด์: HTTPS๋ SSL/TLS๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ๋ณด์์ ๊ฐํํ ๋ฐ๋ฉด, HTTP๋ ์ํธํ๋์ง ์์ ํ
์คํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
- ํฌํธ ๋ฒํธ: ๊ธฐ๋ณธ์ ์ผ๋ก HTTP๋ 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ , HTTPS๋ 443๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
- ์ฑ๋ฅ: HTTPS๋ ์ํธํ/๋ณตํธํ ๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ HTTP์ ๋นํด ์ฝ๊ฐ์ ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ ์๊ฐ์ด ํ์ํ ์ ์๋ฐ. ๊ทธ๋ฌ๋ ์ต๊ทผ ๊ธฐ์ ์ ๋ฐ๋ฌ๋ก ์ด๋ฌํ ์ฑ๋ฅ ์ฐจ์ด๋ ํฌ๊ฒ ์ค์ด๋ค์๋ค.
- ์ธ์ฆ์: HTTPS๋ SSL/TLS ์ธ์ฆ์๊ฐ ํ์ํ๋ค. ์ด๋ ์น ์๋ฒ์ ์ ๋ขฐ๋๋ฅผ ์ฆ๋ช
ํ๊ณ , ๋ฐ์ดํฐ ์ํธํ์ ํ์ํ ํค๋ฅผ ์ ๊ณตํ๋ค.