๐ HTTP๋ ๋ฌด์์ผ๊น์? - ๊ธฐ๋ณธ ํต์ฌ ์์ฝ ์ด์ ๋ฆฌ
HTTP ๋? - Hyper Text Transfer Protocol
HTTP๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํต์ ๊ท์ฝ์ ๋ง์ผ์ปท๋๋ค.
์น๋ฌธ์๊ฐ์ ๋งํฌ๋ฅผ ํตํด ์ฐ๊ฒฐํ ์ ์๋ ํ๋กํ ์ฝ์ด๋ฉฐ, ๋ฌธ์๋ฟ ์๋๋ผ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ค์ ํญ ๋๊ฒ ์ ์กํ ์ ๊ฐ ์๋ค.
- โHTML, TEXT
- IMAGE, ์์ฑ, ์์, ํ์ผ
- JSON, XML(API)
- ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ก ๊ฐ๋ฅ
์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋๋ถ๋ถ HTTP๋ผ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ ํต์ ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
์๋ฅผ๋ค์ด ์ธํฐ๋ท ์ฃผ์๋ฅผ ์ง์ ํ ๋ http://www.naver.com ์ ๊ฐ์ด ์์ํ๋ ๊ฒ์ www.naver.com ์ด๋ผ๋ ์ธํฐ๋ท ์ฃผ์๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ ์ ๋ณด ๋ฑ์ ๊ตํ์ HTTP์ ํต์ ๊ท์ฝ๋๋ก ์ฒ๋ฆฌํ๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ๋ณผ ์ ์๋ค.
๋ํ ์ธํฐ๋ท ๊ธฐ๋ฐ ์๋น์ค์๋ HTTP ์ธ์๋ Email, FTP, DNS, NEWS ๋ฑ์ด ์๋ค.
HTTP์ ์ญ์ฌ
- HTTP/0.9 (1991๋ ) : GET ๋ฉ์๋๋ง ์ง์, HTTP ํค๋ X
- HTTP/1.0 (1996๋
) : ๋ฉ์๋, ํค๋, ์ํ์ฝ๋ ์ถ๊ฐ
- ์์ฒญ ํค๋ : http ๋ฒ์ ์ด ์๊น
- ์๋ต ํค๋ : ์ํ์ฝ๋์ content-type์ด ์๊ฒจ html ํ์ผ ์ธ ๋ค๋ฅธ ํ์ ์ ํ์ผ๋ ์ ์ก
- ๋จ๊ธฐ์ปค๋ฅ์ : connection ํ๋๋น 1 ์์ฒญ, 1 ์๋ต๋ง ์ฒ๋ฆฌ ๊ฐ๋ฅ. ๊ทธ๋์ ๋งค๋ฒ ์๋ก์ด ์ฐ๊ฒฐ๋ก ์ ๋ฅ ์ ํ ๋ฐ ์๋ฒ ๋ถํ ๋น์ฉ ์ฆ๊ฐ
- HTTP/1.1 (1997๋
) : ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ฉฐ, ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ
- Persistent connection : ์ง์ ํ timeout ๋์ ์ฐ์์ ์ธ ์์ฒญ ์ฌ์ด์ ์ปค๋ฅ์ ์ ๋ซ์ง ์์
- Pipelining : ํ๋์ ์ปค๋ฅ์ ์์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ฐจ์ ์ธ ์ฌ๋ฌ ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ณด๋ด ๊ทธ ์์์ ๋ง์ถฐ ์๋ต์ ๋ฐ๋ ๋ฐฉ์์ผ๋ก ์ง์ฐ ์๊ฐ์ ์ค์ด๋ ๋ฐฉ์. ๊ทธ๋ฌ๋ Head Of Line Blocking์ ๊ฐ์ ๋ฌธ์ ์ ์ด ๋ง์ ์ฌ์ฅ๋จ
- Head Of Line Blocking : ์ฐ์ ์์๋ก ๋ค์ด์จ ์์ฒญ์ ์๋ต ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ํ ์์์ ์๋ ์์ฒญ์ ์๋ต ์๊ฐ๋ ๊ธธ์ด์ง๋ค๋ ๋จ์
- ์ฐ๋ฆฌ๊ฐ ์๋ ๋๋ถ๋ถ์ HTTP ๊ธฐ๋ฅ์ด 1.1์ ๊ตฌํ ๋ ๊ฒ์ด๊ณ , 2์ 3์์๋ ์ฑ๋ฅ ๊ฐ์ ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ค.
- HTTP/2.0 (2015๋
) : HTTP 1.1 ์ฑ๋ฅ ๊ฐ์ ๋ฐ ํ์ฅ
- ๋ฉ์์ง ์ ์ก ๋ฐฉ์์ ๋ณํ : ๋ฐ์ด๋๋ฆฌ ํ๋ ์ด๋ฐ ๊ณ์ธต ์ฌ์ฉ
- ํ์ฑ, ์ ์ก์๋ ์ฆ๊ฐ
- ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์ ํ
- ๋ฉํฐํ๋ ์ฑ
- HPACK ์์ถ : ํค๋ ์ค๋ณต๊ฐ ๊ฐ์
- HTTP/3.0 (2019๋
~ ์งํ์ค): TCP ๋์ ์ UDP๋ฅผ ์ด์ฉํ QUIC ํ๋กํ ์ฝ ์ฌ์ฉ
- UDP ๊ธฐ๋ฐ์ QUIC ํ๋ก์ฝ์ฝ ๋ฐํ์ผ๋ก ์ ์
- ๊ธฐ์กด TCP์ ๊ณ ์ง์ ์ธ ์ง์ฐ์๊ฐ(RTT)๋ฅผ ํด๊ฒฐํจ
HTTP/1.1, HTTP/2๋ TCP ๊ธฐ๋ฐ์ด๋ฉฐ HTTP/3๋ UDP ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ด๋ค.
๊ธฐ์กด TCP๋ 3 way hanshake๋ถํฐ ๋ด๋ถ์ ์ผ๋ก ํฌํจํ๊ฑฐ๋ ์ถ๊ฐํด์ผํ๋ ์์ ๋ค์ด ๋๋ฌด ๋ง์์ ์ ๋ขฐ์ฑ์ด๋ ์ฐ๊ฒฐ์ฑ์ ๋ณด์ฅ๋์ง๋ง ์๋๊ฐ ๋จ์ด์ง๋ค. ๊ทธ๋ ๊ธฐ์ UDPํ๋กํ ์ฝ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ์ฌ์ค๊ณ๋ฅผ ํด์ ๋์ค๋๊ฒ HTTP/3์ด๋ค.
[WEB] ๐ HTTP 0.9 ~ HTTP 1.1 ๊น์ง ์์๋ณด๋ ํต์ ๊ธฐ์
HTTP / 0.9 HTTP์ ์์์ 1989๋ ํ ๋ฒ๋ ๋ฆฌ(Tim Berners-LEE)์ ์ํด ์ ์๋ ์ธํฐ๋ท์ ํ์ดํผ ํ ์คํธ ์์คํ ์ด๋ค. ์ด๊ธฐ ๋ฒ์ ์ธ HTTP/0.9๋ ๋งค์ฐ ๋จ์ํ ํ๋กํ ์ฝ์ด์๋ค. ๊ฐ๋ฅํ ๋ฉ์๋๋ ํ์ดํผํ ์คํธ ๋ฌธ์
inpa.tistory.com
[WEB] ๐ HTTP 2.0 ํต์ ๊ธฐ์ - ์์ ์๊ฒ ์ดํดํ๊ธฐ
HTTP / 2.0 HTTP 2.0์ ๊ธฐ์กด HTTP 1.1 ๋ฒ์ ์ ์ฑ๋ฅ ํฅ์์ ์ด์ ์ ๋ง์ถ ํ๋กํ ์ฝ์ด๋ค. ์ธํฐ๋ท ํ๋กํ ์ฝ ํ์ค์ ๋์ฒด๊ฐ ์๋ ํ์ฅ์ผ๋ก์จ, HTTP 1.1์ ์ฑ๋ฅ ์ ํ ๋ถ๋ถ๊ณผ ๋นํจ์จ์ ์ธ ๊ฒ๋ค์ ๊ฐ์ ๋์ด ํ์ํ
inpa.tistory.com
[WEB] ๐ HTTP 3.0 ํต์ ๊ธฐ์ - ์์ ์๊ฒ ์ดํดํ๊ธฐ
HTTP / 3.0 HTTP 2.0 ์ ๋ฑ์ฅ๊ณผ ํจ๊ป ๊ธฐ์กด์ ํ๋กํ ์ฝ ๋ฐ์ดํฐ ์ฒด๊ณ๋ฅผ ํ๋ ์๊ณผ ์คํธ๋ฆผ ๊ฐ๋ ์ผ๋ก ์ฌ๊ตฌ์ถํ ๊ฒฐ๊ณผ ๊ธฐ์กด ๋ณด๋ค ํ์ ์ ์ผ๋ก ์ฑ๋ฅ์ด ํฅ์๋๊ฒ ๋์๋ค. ํ์ง๋ง ์ฌ์ ํ HTTP๋ TCP ๊ธฐ๋ฐ ์์์ ๋
inpa.tistory.com
๊ฐ๋ฐ์๋๊ตฌ์์ HTTP ๋ฒ์ ํ์ธํ๊ธฐ
์ค์ ๋ก ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ํ์ด์ง ์์ฒญ์ ๋ํ ํ๋กํ ์ฝ์ ํ์ธํด๋ณด๋ฉด ์ต์ ๊ธฐ์ ์ธ HTTP/2 ๋ HTTP/3์ ์ฌ์ฉํ๊ณ ์๋๊ฑธ ํ์ธํ ์ ์๋ค.
๋ค์์ ๊ตฌ๊ธ์์ ์๋ฌด ๋จ์ด๋ ๊ฒ์ํ๊ณ ๊ฐ๋ฐ์ ๋๊ตฌ์ ๋คํธ์ํฌ ํญ ์ํ๋ฅผ ์ฐ์ ๊ฒ์ด๋ค.
์์ฒญ ํ๋กํ ์ฝ๋ณด๋ฉด h3 ์ด๋ผ๊ณ ์ ํ์ ธ ์๋ ๊ฑธ ๋ณผ์ ์๋๋ฐ HTTP/3 ์ ์ฝ์ด์ด๋ค.
๋ค์์ ๋ค์ด๋ฒ์์ ์๋ฌด ๋จ์ด๋ฅผ ๊ฒ์ํ๊ณ ์ฐ์ ์ฌ์ง์ธ๋ฐ h2์ธ HTTP/2์ ๊ฐํน http/1.1 ๋ก ํต์ ํ๋ ๊ฒ๋ ๋ณด์ธ๋ค.
HTTP์ ํต์ ๊ตฌ์กฐ
HTTP ํต์ ์ ํด๋ผ์ด์ธํธ(Front-End)์ ์๋ฒ(Back-End)๋ก ๋๋์ด์ง ๊ตฌ์กฐ๋ก ๋์ด์๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ(Request)ํ๋ฉด ์๋ฒ๊ฐ ์๋ต(Response) ํ๋ ๊ฒ์ด๋ค.
์๋ฅผ๋ค์ด ํด๋ผ์ด์ธํธ๊ฐ HTTP ๋ฉ์ธ์ง๋ฅผ ๋ง๋ค์ด ๋ณด๋ด๊ณ , ์๋ฒ์์ ์์ฒญ์ ๋ํ ์๋ต์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฒ๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ตํ๋ค.
๊ทธ๋ผ HTTP ํต์ ํ๋๋ฐ ์์ด, ์ด์งธ์ ์ด๋ ๊ฒ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํด์ผ๋ง ํ ๊น?
์ด์ ๋ ๊ฐ์์ ์ญํ ์ ์ง์คํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํด๋ผ์ด์ธํธ์์๋ ๋ณต์กํ ๋น์ฆ๋์ค๋ก์ง์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ํ์์๊ณ , UI๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ ์ง์คํ ์ ์๋ค.
์๋ฒ์์๋ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ด๋, ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ๋ง ์ง์คํ๋ฉด ๋๋ค. ๋ง์ฝ ํธ๋ํฝ์ด ํญ์ฃผํด ๊ณ ๋ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์ ๊ฒฝ์ฐ์ง ์๊ณ ์๋ฒ๋ง ๊ฐ์ ํ๋ฉด ๋๋ค.
์ฆ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ๋ถํ๋ค๋ ๊ฒ์ ๊ฐ์์ ์ฑ ์์ ๋๋ ํด๋น ์ฑ ์์๋ง ์ง์คํ์ฌ, ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์ชฝ์ด ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ณ ๋ํ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
HTTP์ ๋ฌด์ํ์ฑ (Stateless)
- ๋ฌด์ํ(Stateless) : ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ํ๋ฅผ ์ ์งํ์ง ์๋๋ค.
- ์ฅ์ : ์๋ฒ ํ์ฅ์ฑ ๋์(์ค์ผ์ผ ์์)
- ๋จ์ : ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ ๋ฐ์ดํฐ ์ ์ก (๋ฉ๋ชจ๋ฆฌ ↑)
[WEB] ๐ Stateful / Stateless ์ฐจ์ด ๐ฏ ์ ๋ฆฌ
Stateful ๊ณผ Stateless ์ฐจ์ด์ ์น ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ฉด ํด๋ผ์ด์ธํธ(Client)์ ์๋ฒ(Server)๊ฐ์ ํต์ ์ ์ํ์ ์ง(Stateful) ํ๋๋, ์ํ์ ์งํ์ง์์(Stateless) ์ผ๋ก ํ๋๋ ๋ผ๋ ๋ง๊ท๋ฅผ ํ๋ฒ์ฏค์ ๋ค์ด๋ณธ ์ ์ด ์
inpa.tistory.com
์ํ์ ์ง(Stateful)
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ๋ค.
- ๊ฐ์ฅ ๋ํ์ ์ธ ์๋ก ํํ์ด์ง์์ ํ์ ๋ก๊ทธ์ธ์ ํ๋ฉด, ํ์ด์ง๋ฅผ ์ฎ๊ฒจ๊ฐ๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ๊ธฐ ๋๋ฌธ์ ๊ทธ ํด๋ผ์ด์ธํธ๊ฐ ํ์์ธ์ง ์๋ค.
- ํ์ง๋ง ์ค๊ฐ์ ์๋ฒ๊ฐ ์ฅ์ ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ์ฒ์๋ถํฐ ๋ค์ ์์ ์ ์์ฒญํด์ผํ๋ค.
- ๊ทธ๋์ ์๋ฒ๊ฐ ๋ฐ๋๋๋ง๋ค ํด๋ผ์ด์ธํธ์ ๋ด์ฉ์ ๊ธฐ๋กํด์ ์ํ๋ฅผ ์ ์งํด์ผ ๋๋๋ฐ ์ฝ์ง ์๋ค.
๋ฌด์ํ(Stateless)
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค.
- ํํ์ด์ง์์ ํ์ ๋ก๊ทธ์ธ์ ํ๊ณ ํ์ด์ง๋ฅผ ์ฎ๊ฒผ๋๋ฐ ๋ ๋ก๊ทธ์ธ์ ํ๋ผ๋ ํ์ด์ง๊ฐ ๋ฌ๋ค. ์๋ํ๋ฉด ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ ํด๋ผ์ด์ธํธ๊ฐ ํ์์ธ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฐ๋ผ์ ๋ฌด์ํ ํ๊ฒฝ์์ ํ์ ์ ๋ณด๋ฅผ ์๋ฒ๊ฐ ์๋ ํด๋ผ์ด์ธํธ๊ฐ ํ ํฐ ํํ๋ก ๋ค๊ณ ์์ผ๋ฉด์, ์๋ฒ์ ํต์ ํ ๋ ์ค์ด ๋ณด๋ด ์ธ์ฆํ๋ ์์ด๋ค.
- ์ด๋ฌํ ๋ฌด์ํ ํ๊ฒฝ์ ํด๋ผ์ด์ธํธ๊ฐ ์ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ์๋ฌด ์๋ฒ๋ ํธ์ถํด๋ ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ์ค์ผ์ผ์์(์ํํ์ฅ)์ ์ ๋ฆฌํ๋ค.
- ํ์ง๋ง ์ํ์ ์ง(Stateful)๋ณด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค๋ ๋จ์ ์ด ์๋ค.
HTTP์ ๋น์ฐ๊ฒฐ์ฑ (Connectionless)
- HTTP๋ ๊ธฐ๋ณธ์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ด๋ค.
- ์ฆ, ์๋ฒ์ ํด๋ผ์ด์ธํธ์ Connection ์ฐ๊ฒฐ์ ์ง์ํ์ง ์๋๋ค.
- 1์๊ฐ๋์ ์์ฒ๋ช
์ด์์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ์ ๋ค.
์๋ฅผ๋ค์ด ์น ๋ธ๋ผ์ฐ์ ๊ฒ์ํ์ด์ง์์ ๊ฒ์๋ฒํผ๋ง ์ฐํํ๋ฉด์ ์ด์ฉํ์ง๋ ์๋๋ฏ์ด ๋ง์ด๋ค. - ์ด๋ฌํ ๋น์ฐ๊ฒฐ์ฑ ํน์ฑ ๋๋ฌธ์ ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
[ Stateless ์ Connectionless ์ฐจ์ด ]
Stateless (๋ฌด์ํ์ฑ): ํ์ํ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ง๊ณ ์ค๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ด๋ ์๋ฒ๊ฐ ์๋ตํด๋ ์๊ด ์์. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ํญ ์ฆ๊ฐํ๋ฉด ์๋ฒ๋ฅผ ์ฆ์คํด ํด๊ฒฐํ ์ ์์
Connectionless (๋น์ฐ๊ฒฐ์ฑ): ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ๋ฐ๋ก TCP/IP ์ฐ๊ฒฐ์ ๋์ด ์ฐ๊ฒฐ์ ์ ์งํ์ง ์์์ผ๋ก์จ ์๋ฒ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ ๋ง์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋์ํ ์ ์๊ฒ ํจ
์ฆ, ๋ฌด์ํ์ฑ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ๋ค๊ณ ์์ง์์ ํด๋ผ์ด์ธํธ๊ฐ ์ํ ์ ๋ณด๋ฅผ ์ผ์ผํ http์ ์ค์ด ์์ฒญํด์ผ๋๋ ๊ฒ์ ๋งํ๊ณ , ๋น์ฐ๊ฒฐ์ฑ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๋์ด์ ธ ๋จ์ ๋๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค.
์ฐ๊ฒฐ์ ์ ์งํ๋ ๋ชจ๋ธ
- ์ฐ๊ฒฐ์ ์ ์งํ๋ค๋ฉด, ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ์๋ก์ ๋คํธ์ํน ์์ฒญ์ด ์๋๋ผ๋ ๊ณ์ํด์ ์ ์ง๋๋ค.
- ์์์ด ๊ณ์ํด์ ์ฌ์ฉ๋๋ค. (์ด๋ฌํ ์ ๋๋ฌธ์, HTTP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ด๋ค)
์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ
- ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋๋ค๋ฉด, ์๋ฒ์ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ๋ค๋ง, ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ๊ณ์ ๋๋ ๋ค๋ ๊ฒ์ TCP/IP ์ฐ๊ฒฐ์ ๋งค๋ฒ ์๋กญ๊ฒ ๋งบ์ด์ผ ํ๋ค๋ ๊ฒ์ ๋ปํ๋ค.
- ์ฆ, TCP 3 way handshake๋ฅผ ๋งค๋ฒ ํด์ผํ๊ณ , ์ด๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
- ์ด๋ฌํ ๋ฌธ์ ๋ ์ง๊ธ HTTP ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐํ๊ณ ์๋ค.
- HTTP/2, HTTP/3์์ ๋ ๋ง์ ์ต์ ํ๊ฐ ์ด๋ฃจ์ด ์ก๋ค.
๋น์ฐ๊ฒฐ์ฑ ํ๊ณ - ๋จ๊ธฐ ์ปค๋ฅ์
- HTTP ์ด๊ธฐ - ์ฐ๊ฒฐ, ์ข ๋ฃ ๋ญ๋น
- ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ๋ฑ ์ ๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋ ๋๋๋ฐ, ์๋ก ์ฐ๊ฒฐ์ ๋งบ์ ๋ ๋ง๋ค TCP Handshake๊ฐ ๋ฐ์ํ๋ค๋ ๋ฌธ์ ์ ์ด ์์
- ๊ทธ๋์ HTTP ์ด๊ธฐ์๋ ๋ชจ๋ ์๋ฃ์ ๋ํด์ ๋น์ฐ๊ฒฐ์ฑ์ผ๋ก ๊ฐ๊ฐ์ ์์์ ๋ํด ์ฐ๊ฒฐ/์๋ต/์ข ๋ฃ๋ฅผ ๋ฐ๋ณตํ๋ค๋ณด๋ ๋๋ต์ ์ผ๋ก 1์ด๊ฐ๋ ์๋ชจ๋์๋ค.
๋น์ฐ๊ฒฐ์ฑ ๊ทน๋ณต - HTTP ์ง์ ์ฐ๊ฒฐ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ผ ์ฐ๊ฒฐ์ ํ ๋ค์ ํ์ํ ์์์ ์์ฒญ/์๋ต์ผ๋ก ๋ค์ด๋ก๋๋ฐ๋๋ค.
- ์์ผ ์ฐ๊ฒฐ์ ์ผ์ ์๊ฐ ๋์ ๋ ์ ์งํจ์ผ๋ก์จ, ํ์ํ ์์๋ค์ ๋ชจ๋ ๋ค์ด๋ฐ์๋๊น์ง ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋์ง์๊ณ ์์ฒญ/์๋ต์ด ๋ฐ๋ณต๋ ๋ค ์ข ๋ฃ
HTTP ์ํ ์ฝ๋
์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ต์์ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก์, 3์๋ฆฌ ์ซ์๋ก ๋ง๋ค์ด์ ธ ์์ผ๋ฉฐ, 100 ~ 500 ๋ฒ๋ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์๋ฅผ ๋ค์ด ์ฒซ๋ฒ์งธ ์๋ฆฌ๊ฐ 4์ 5์ธ ๊ฒฝ์ฐ๋ ์ ์์ ์ธ ์ํฉ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฌ์ดํธ ๊ด๋ฆฌ์๊ฐ ์ฆ์ ์์์ผ ํ๋ ์ ๋ณด์ด๋ค.
- 1xx(์ ๋ณด) : ์์ฒญ์ ๋ฐ์์ผ๋ฉฐ ํ๋ก์ธ์ค๋ฅผ ๊ณ์ ์งํ
- 2xx(์ฑ๊ณต) : ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์์ผ๋ฉฐ ์ธ์ํ๊ณ ์์ฉ
- 3xx(๋ฆฌ๋ค์ด๋ ์ ) : ์์ฒญ ์๋ฃ๋ฅผ ์ํด ์ถ๊ฐ ์์ ์กฐ์น๊ฐ ํ์
- 4xx(ํด๋ผ์ด์ธํธ ์ค๋ฅ) : ์์ฒญ์ ๋ฌธ๋ฒ์ด ์๋ชป๋์๊ฑฐ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์
- 5xx(์๋ฒ ์ค๋ฅ) : ์๋ฒ๊ฐ ๋ช ๋ฐฑํ ์ ํจํ ์์ฒญ์ ๋ํ ์ถฉ์กฑ์ ์คํจ
HTTP ๋ฉ์ธ์ง
๊ฐ๋ฐ์ ๋๊ตฌ์ ๋คํธ์ํฌ ์ฐฝ์์ ์๋ฒ๋ก ๋ถํฐ ๋ค์ด ๋ฐ์ ํ์ผ์ ๋๋ฌ๋ณด๋ฉด ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด Headers ๋ถ๋ถ์ ๋ญ๋ผ๋ญ๋ผ ์ ํ์ ธ ์๋ ๊ฒ์ ๋ณด์์ ๊ฒ์ด๋ค. ์ด๊ฒ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ HTTP ๋ฉ์ธ์ง๋ฅผ ํตํด ํต์ ํ ์ด๋ ฅ์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค.
Request Headers ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ณด๋ด๋ HTTP ๋ฉ์ธ์ง ์ด๋ ฅ์ด๋ฉฐ, Response Headers ๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ HTTP ๋ฉ์ธ์ง ์ด๋ ฅ์ด๋ค.
์ฒ์์๋ ๋ฏ์ ์ธ๊ณ์ด ์ฒ๋ผ ๋์๋ ๊ฒ ๊ฐ์ง๋ง, ์์ธํ ์ดํด๋ณด๋ฉด ๋๋ฆ ํํํ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๊ฑธ ๋ณผ ์ ์๋ค.
์ด HTTP ํค๋ ๋ด์ฉ ๊ตฌ์ฑ์ด ์ด๋ป๊ฒ ๋์ด์๋์ง ์๊ณ ์ถ๋ค๋ฉด ์๋ ํฌ์คํ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
HTTP ๋ฉ์ธ์ง ๊ตฌ์กฐ
HTTP ๋ฉ์์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์์ ๋ผ์ธ(Start Line), ํค๋(Header), ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line), ๋ฐ๋(Message Body)๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ฐธ๊ณ ๋ก ๊ณต๋ฐฑ ๋ผ์ธ์ HTTP ๋ฉ์ธ์ง ๊ฐ ๊ตฌ๋ถ์ ํ๊ธฐ ์ํ ๋ผ์ธ์ด๋ฏ๋ก, ๋จ์ํ ๋ณด๊ธฐ ํธํ๊ฒ ๋ฃ๋ ๊ฒ์ ๋์ด์ ๋ฐ๋์ ์์ด์ผ ํ๋ค. ๋ง์ฝ ๋ณด๋ผ ๋ฉ์ธ์ง ๋ฐ๋๊ฐ ์๋ค๋ฉด ๊ณต๋ฐฑ๋ง ๋ฃ๊ณ ๋๋ด๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ HTTP ์์ฒญ ์ข ๋ฅ์ ๋ฐ๋ผ Message Body๊ฐ ํฌํจ๋ ์๋ ์๊ณ ์๋ ์๋ ์๋ค.
์ ์ฒด์ ์ธ ๊ณจ์๋ ์์ ๊ฐ๊ณ HTTP ์์ฒญ(Request)๋ ์๋ต(Response)๋์ ๋ฐ๋ผ ์์ ๋ด์ฉ๋ฌผ์ด ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ๋๋ค.
HTTP ์์ฒญ ๋ฉ์ธ์ง
- ์์ ๋ผ์ธ(Start Line)
- Method : GET / POST / PUT / DELTE ๋ฑ (HTTP ๋ฉ์๋)
- URL : ์์ฒญ ๋์ ๊ฒฝ๋ก ํ์
- Version : ์ฌ์ฉ๋ http ๋ฒ์
- ํค๋(Header)
- Headers : HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค. (๋ฉ์ธ์ง ํฌ๊ธฐ, ์์ถ ์ฌ๋ถ, ์ธ์ฆ, ๋ธ๋ผ์ฐ์ ์ ๋ณด, ์๋ฒ ์ ๋ณด, ์บ์ ..๋ฑ)
- ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line) : ํค๋์ ๋ฐ๋๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋ผ์ธ
- ๋ฐ๋(Message Body)
- Message Body : ์ค์ ์ ์กํ ๋ฐ์ดํฐ (HTML ๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ)
HTTP ์๋ต ๋ฉ์ธ์ง
- ์์ ๋ผ์ธ(Start Line)
- Version : ์ฌ์ฉ๋ http ๋ฒ์
- Status Code : ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ด ์ฑ๊ณต์ธ์ง ์คํจ์ธ์ง ์ซ์ ์ฝ๋๋ก ๋ํ๋ธ๋ค. (200, 404, 505)
- Status Message : Status Code ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋์ด ์ดํดํ ์ ์๋ ๊ธ๋ก ํํ
- ํค๋(Header)
- Headers : HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค. (๋ฉ์ธ์ง ํฌ๊ธฐ, ์์ถ ์ฌ๋ถ, ์ธ์ฆ, ๋ธ๋ผ์ฐ์ ์ ๋ณด, ์๋ฒ ์ ๋ณด, ์บ์ ..๋ฑ)
- ๊ณต๋ฐฑ ๋ผ์ธ(Empty Line) : ํค๋์ ๋ฐ๋๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋ผ์ธ
- ๋ฐ๋(Message Body)
- Message Body : ์ ์ก ๋ฐ์ ๋ฐ์ดํฐ
HTTP ๋ฉ์๋
HTTP ๋ฉ์๋๋, ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ด๋ฃจ์ด์ง๋ ์์ฒญ(Request)๊ณผ ์๋ต(Response) ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ ์ผ์ปซ๋๋ค.
์ฝ๊ฒ ๋งํ๋ฉด ์๋ฒ์ ์ฃผ์ด์ง ๋ฆฌ์์ค์ ์ํํ๊ธธ ์ํ๋ ํ๋, ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์์ ์ง์ ํ๋ ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด๋ค.
HTTP ๋ฉ์๋ ์ข ๋ฅ
HTTP ๋ฉ์๋์ ์ข ๋ฅ๋ ์ด 9๊ฐ์ง๊ฐ ์๋ค. ์ด ์ค ์ฃผ๋ก ์ฐ์ด๋ ๋ฉ์๋๋ 5๊ฐ์ง๊ฐ ์๋ค.
[WEB] ๐ HTTP ๋ฉ์๋ ์ข ๋ฅ & ์์ฒญ ํ๋ฆ ๐ฏ ์ด์ ๋ฆฌ
HTTP Method ์ข ๋ฅ HTTP ๋ฉ์๋๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ด๋ฃจ์ด์ง๋ ์์ฒญ(Request)๊ณผ ์๋ต(Response) ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ ์ผ์ปซ๋๋ค. ์ฝ๊ฒ ๋งํ๋ฉด ์๋ฒ์ ์ฃผ์ด์ง ๋ฆฌ์์ค์ ์ํํ๊ธธ ์ํ๋ ํ๋,
inpa.tistory.com
์ฃผ์ ๋ฉ์๋ 5๊ฐ์ง
- GET : ๋ฆฌ์์ค ์กฐํ
- POST : ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฐ์ดํฐ ๋ฑ๋ก์ ์ฌ์ฉ
- PUT : ๋ฆฌ์์ค๋ฅผ ๋์ฒด, ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ
- PATCH : ๋ฆฌ์์ค๋ฅผ ์ผ๋ถ๋ง ๋ณ๊ฒฝ
- DELETE : ๋ฆฌ์์ค ์ญ์
๊ธฐํ ๋ฉ์๋ 4๊ฐ์ง
- HEAD: GET๊ณผ ๋์ผํ์ง๋ง ๋ฉ์์ง ๋ถ๋ถ์ ์ ์ธํ๊ณ , ์ํ ์ค๊ณผ ํค๋๋ง ๋ฐํ
- OPTIONS: ๋์ ๋ฆฌ์์ค์ ๋ํ ํต์ ๊ฐ๋ฅ ์ต์ ์ ์ค๋ช (์ฃผ๋ก CORS์์ ์ฌ์ฉ)
- CONNECT: ๋์ ์์์ผ๋ก ์๋ณ๋๋ ์๋ฒ์ ๋ํ ํฐ๋์ ์ค์
- TRACE: ๋์ ๋ฆฌ์์ค์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ์ํ
๋ฉ์๋ | ์ค๋ช | request body |
successful response body |
์์ | ๋ฉฑ๋ฑ | ์บ์ ๊ฐ๋ฅ | allow in HTML forms |
GET | ๋ฆฌ์์ค ์์ฒญ | NO | YES | YES | YES | YES | YES |
HEAD | GET ๋ฉ์๋์ ์์ฒญ๊ณผ ๋์ผํ ์๋ต์ ์๊ตฌํ์ง๋ง, ์๋ต ๋ณธ๋ฌธ์ ํฌํจ X | NO | NO | YES | YES | YES | NO |
POST | ๋ด์ฉ ์ ์ก | YES | YES | NO | NO | NO | YES |
PUT | ๋ด์ฉ ๊ฐฑ์ | YES | YES | NO | YES | NO | NO |
DELETE | ๋ฆฌ์์ค๋ฅผ ์ญ์ | ๊ถ์ฅํ์ง ์์ผ๋ ๊ฐ๋ฅ | ๊ถ์ฅํ์ง ์์ผ๋ ๊ฐ๋ฅ | NO | YES | NO | NO |
CONNECT | ๋ชฉ์ ๋ฆฌ์์ค๋ก ์๋ณ๋๋ ์๋ฒ๋ก์ ํฐ๋์ ๋งบ์ | NO | YES | NO | NO | NO | NO |
OPTIONS | ์น ์๋ฒ์ธก ์ ๊ณต ๋ฉ์๋์ ๋ํ ์ง์ | NO | YES | YES | YES | NO | NO |
TRACE | ๋ชฉ์ ๋ฆฌ์์ค์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง loop-back ํ ์คํธ | NO | YES | NO | YES | NO | NO |
PATCH | ๋ด์ฉ ๋ถ๋ถ ๊ฐฑ์ | YES | YES | NO | NO | NO | NO |
HTTP ๋ฉ์๋ ํน์ฑ
[WEB] ๐ HTTP์ ๋ฉฑ๋ฑ์ฑ · ์์ ์ฑ · ์บ์์ฑ ๐ฏ ์๋ฒฝ ์ดํดํ๊ธฐ
HTTP ๋ฉ์๋์ ์์ฑ ์ฃผ์ HTTP Method์ธ GET / POST / PUT / PATCH / DELETE ๋ ๊ฐ ๋ฉ์๋์ ๋์ ๊ณผ์ ๋ฟ๋ง ์๋๋ผ, ๋ฉ์๋์ ์์ฑ ๋ํ ์ ํ์๊ฐ ์๋ค. ์๋ํ๋ฉด ์ด๋ ํ HTTP ๋ฉ์๋๋ก ์๋ฒ์ ์์ฒญํ๋๋์ ๋ฐ
inpa.tistory.com
์์ ์ฑ(Safe)
- ํธ์ถํด๋ ๋ฆฌ์์ค ๋ณ๊ฒฝ์ด ์ผ์ด๋์ง ์๋ ์์ฑ
- ์ฌ๊ธฐ์ ์์ ์ ๊ธฐ์ค์ ์ค์ง ๋ฆฌ์์ค ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด๋ฉฐ, ์ธ์ ์ธ ์์๋ ํฌํจํ์ง ์๋๋ค.
- GET, HEAD๋ฅผ ์์ ํ ๋ฉ์๋๋ผ๊ณ ๋ณผ ์ ์๋ค. (POST, PUT, PATCH, DELETE๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฉ์๋์ด๋ฏ๋ก)
๋ฉฑ๋ฑ์ฑ(Idempotent)
- ๋์ผํ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ๋ณด๋ด๋ ํ ๋ฒ ๋ณด๋ด๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ
- ๊ฐ์ ํ์๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ๋๋ผ๋ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ฐ์ผ๋ฉฐ, ์๋ฒ์ ์ํ๋ก ๋์ผํ๊ฒ ๋จ์
- ๋ฉฑ๋ฑ์ฑ์ ์์ฒญ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ๋จ
- TimeOut ๋ฑ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก๋ถํฐ ์ ์ ์๋ต์ ๋ฐ์ง ๋ชป ํ์ ๋ ๊ฐ์ ์์ฒญ์ ๋ค์ ํด๋ ๋๋์ง ํ๋จํ๋ ๊ทผ๊ฑฐ
- GET : ๋ช ๋ฒ์ ์กฐํํ๋๋ผ๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์กฐํ๋๋ค. ⇒ ํ์ ์ ๋ณด๋ฅผ ๋ช๋ฒ์ ์กฐํํ๋ค๊ณ ์ ๋ณด๊ฐ ๋ฌ๋ผ์ง์ง ์๋๋ค.
- PUT : ๊ฒฐ๊ณผ๋ฅผ ๋์ฒดํ๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ๋ฒํด๋ ์ต์ข ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
- DELETE : ๊ฒฐ๊ณผ๋ฅผ ์ญ์ ํ๋ค. ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ๋ฒ ํด๋ ์ญ์ ๋ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
- POST : ๋ฉฑ๋ฑ์ด ์๋๋ค. ๋ ๋ฒ ํธ์ถํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ⇒ POST๋ก ์ฃผ๋ฌธ์ ๋ ๋ฒ ํธ์ถํ๋ฉด ๊ฒฐ์ ๊ฐ ์ค๋ณต๋ ์ ์๋ค.
์บ์ ๊ฐ๋ฅ (Cacheable)
- ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์บ์ํด ์ฌ์ฉํ ์ ์๋ ์์ฑ์ ๋๋ค.
- GET, HEAD, POST, PATCH๊ฐ ์บ์ ๊ฐ๋ฅํ๋, Message Body์ ์บ์ ํค์ ๋ณต์ก์ฑ ๋ฌธ์ ๋ก ์ค์ ๋ก๋ GET, HEAD๋ง ์ฌ์ฉ
# ์ฐธ๊ณ ์๋ฃ
๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ - ๊น์ํ
https://medium.com/@maheshlsingh8412/cookie-session-story-of-a-stateless-http-3cd09cc01541
https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
https://community.safe.com/s/article/HTTP-Requests-With-The-HTTPCaller
https://dharmanikheem.medium.com/front-end-vs-back-end-what-is-the-difference-9a83a65ee74f