๐ HTTP message ๋ฅผ ์ดํด๋ณด๊ธฐ ์ , Method์ Header ๊ทธ๋ฆฌ๊ณ CORS ์ ์ฑ ์ ์ง๊ณ ๋์ด๊ฐ๋ฉด ์ข๋ค.
2021.09.10 - [๊ฐ๋ฐ ๊ณต๋ถ/Browser] - Client - Server : SOP์ CORS
๐ Simple Request
โพ HTTP Request
โ Host : <host> : <port> (optional)
Host Request header ๋ ์๋ฒ์ ๋๋ฉ์ธ๋ช <host>๊ณผ ์๋ฒ๊ฐ ๋ฆฌ์ค๋ํ๋ TCP ํฌํธ<port>๋ฅผ ํน์ ํ๋ค.
์ฌ๊ธฐ์๋ localhost๊ฐ ๋๋ฉ์ธ๋ช , 5000์ด ํฌํธ์ด๋ค.
ํฌํธ๊ฐ ์ฃผ์ด์ง์ง ์์ผ๋ฉด ์์ฒญ๋ ์๋ฒ์ ๊ธฐ๋ณธ ํฌํธ๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
์์ฒญ ๋ฉ์ธ์ง์ Host ํค๋ ํ๋๊ฐ ์๊ฑฐ๋ 1๊ฐ ์ด์์ ํค๋ ํ๋๊ฐ ํฌํจ๋์ด์์ผ๋ฉด 400 (Bad Request) ์ํ ์ฝ๋๊ฐ ์ ์ก๋ ๊ฒ์ด๋ค.
โ Connection : keep-alive
โ Connection : close
Connection General header ๋ ํ์ฌ์ ์์ฒญ์ ๋ํ ์๋ต์ด ์ ์ก ์๋ฃ๋ ํ, ๋คํธ์ํฌ ์ ์์ ์ ์งํ ์ง ๋ง์ง๋ฅผ ์ ์ดํ๋ค.
Connection ๊ฐ์ด keep-alive์ด๋ฉด ์ฐ๊ฒฐ์ ๋๊ธฐ์ง ์๊ณ ์ง์๋๋ฉฐ ๋์ผํ ์๋ฒ์ ๋ํ ํ์ ์์ฒญ์ ์ํํ ์ ์๋ค.
Connection ๊ฐ์ด close์ด๋ฉด ํด๋ผ์ด์ธํธ ํน์ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ์ฐจ๋จํจ์ ์๋ฏธํ๋ค.
โ Content-Length : <length>
Content-Length Entity header ๋
(์์ฒญ ๋ด์์๋) (์๋ต ๋ด์์๋)
์์ ์์๊ฒ ๋ณด๋ด์ง๋, byte ๋จ์๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด ๋ณธ๋ฌธ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ธ๋ค.
โ Origin : null
โ Origin : <scheme> " : / / " <hostname> [ " : " <port> ]
Origin Request header ๋ fetch ๊ฐ ์์๋๋ ์์น์ด๋ค ! ๊ฒฝ๋ก ์ ๋ณด๋ ํฌํจํ์ง ์๊ณ , ์๋ฒ ์ด๋ฆ๋ง ํฌํจํ๋ค.
CORS requests์ POST requests ๋ชจ๋ ์ด Origin Request header๋ฅผ ํฌํจํ์ฌ ์ ์กํ๋ค.
Referer header์ ๋น์ทํ์ง๋ง Origin Request header๋ ์ ์ฒด๊ฒฝ๋ก๋ฅผ ๊ณต๊ฐํ์ง ์๋๋ค.
โ Referer : <url>
Referer Request header ๋ ํ์ฌ ์์ฒญ์ ๋ณด๋ธ ํ์ด์ง์ ์ ๋ ์ฃผ์ ํน์ ๋ถ๋ถ ์ฃผ์๋ฅผ ํฌํจํ๋ค.
Referer Request header ๋ฅผ ํตํด ์ฌ๋๋ค์ด ์ด๋๋ก๋ถํฐ ์์ ๋ฐฉ๋ฌธ์ค์ธ์ง ์ง์ ๊ฒฝ๋ก๋ฅผ ํ์ ํ ์ ์๋ค.
--> ๋ถ์, ๋ก๊น , ์บ์ฑ ์ต์ ํ์ ์ฌ์ฉ๋ ์ ์์.
โ Accept : <MINE_type> / <MINE_subtype>
โ Accept : <MINE_type> / *
โ Accept : */*
Accept Request header ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ดํด ๊ฐ๋ฅํ ์ปจํ ์ธ ํ์ ์ด ๋ฌด์์ธ์ง ์๋ ค์ค๋ค. (MINE type์ ํตํด !!)
์๋ฒ๋ ํด๋ผ์ด์ธํธ์์ ๋์ด์จ Accept Request header ์ ์ข ๋ฅ ์ค ํ๋๋ฅผ ํํ๊ณ
์ฌ์ฉํ ํ Content-Type Response header ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ํ๋ ํ์ ์ ์๋ ค์ค๋ค.
๐ MINE type ์ด๋ ??
MINE = Multipurpose Internet Mail Extensions ๋ค์ํ MINE type ์ข ๋ฅ๋ค
์น์์ "ํ์ผ์ ํ์ฅ์"๋ ํฐ ์๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์ MINE type์ ํตํด ํด๋น ๋ฌธ์์ ์ข ๋ฅ๋ฅผ ๋ช ํํ๊ฒ ์ ์กํด์ผํ๋ค.
๐ ๋ฌธ๋ฒ : type / subtype
๐ ์์ : text/plain, text/html, image/jpeg, image/png, audio/mpeg, audio/*, application/xml
-> MINE type์ ์ ์ ํ๊ฒ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๋ ๊ณต๋ถํด์ผํ๋ค ...
โ Content-Type : text / html (MINE type); charset=utf-8 (Encoding method)
โ Content-Type : multipart / form-data (MINE type); boundary=something (Boundary directive)
Content-Type Entity header ๋
(์์ฒญ ๋ด์์๋)
์๋ฒ์๊ฒ ์์ฒญํ ์ปจํ ์ธ ์ ์ ํ์ด ๋ฌด์์ธ์ง ์๋ ค์ค๋ค. (๋ณดํต PUT ์ด๋ POST ๋ฉ์๋)
(์๋ต ๋ด์์๋)
ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต๋ ์ปจํ ์ธ ์ ์ ํ์ด ๋ฌด์์ธ์ง ์๋ ค์ค๋ค.
Content-Type์ MINE type์ด ๋ช ์๋์ด์์ง ์๊ฑฐ๋ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ MINE type ์ ์ ์ด ์๋ชป๋ ๊ฒ ๊ฐ๋ค ํ๋จํ๋ฉด
๋ฆฌ์์ค๋ฅผ ์ง์ ํ์ด๋ณด๊ณ MINE type์ ์ง์ ์ถ์ถํด๋ด๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. --> ๐ MINE Sniffing ์ด๋ผ๊ณ ํจ.
์ด๋ฌํ ํด๋ผ์ด์ธํธ ๋จ์ ์์์ ์ธ ํ๋จ์ ๋ง๊ธฐ ์ํด X-Content-Type-Options Response header ๋ฅผ nosniff ๋ก ์ค์ ํ๋ค.
โ Accept-Language : <language>
โ Accept-Language : <locale>
โ Accept-Language : *
Accept-Language Request header ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ์ธ์ด๋ฅผ ์ดํดํ ์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฒ์ ๋ "์ ํธ"ํ๋ ์ง ์๋ ค์ค๋ค.
์ด ํค๋๋ ์๋ฒ๊ฐ ์ธ์ด๋ฅผ ๊ฒฐ์ ํ ๋ช ํํ ๋ฐฉ๋๊ฐ ์์ ๋ ์ฐธ์กฐํ๋ ์ฉ๋๋ก ์ฐ์ธ๋ค.
์๋ฒ๋ ์์ฒญ๋ ์ ์ ์ค ํ๋๋ฅผ ์ ํํ๊ณ , ๊ทธ๊ฒ์ Content-Language Response header ์ ํจ๊ป ์ ํ๋ ๋ด์ฉ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ค๋ค.
โพ HTTP Response
โ Date : <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
Date General header ๋ HTTP ๋ฉ์ธ์ง๊ฐ ๋ง๋ค์ด์ง ๋ ์ง์ ์๊ฐ์ ํฌํจํ๋ค.
โ Keep-Alive : parameters
Keep-Alive General header ๋ ์์ ์์๊ฒ ์ฐ๊ฒฐ์ ๋ํ ํ์ ์์๊ณผ ์์ฒญํ ์ ์๋ ์ต๋ ํ์๋ฅผ ์๋ ค์ค๋ค.
์ด ํค๋๋ฅผ ๋ฃ๊ธฐ ์ํด์๋ Connection General header ๊ฐ ๋ฌด์กฐ๊ฑด keep-alive ๋ก ์ค์ ๋์ด ์์ด์ผ ํ๋ค.
โ ๊ทธ๋ฌ๋ ์ด ํค๋๋ ๋นํ์ค์ด๋ค. ๋๋๋ก์ด๋ฉด ์ฌ์ฉํ์ง ๋ง์ โ
'Front-end > Browser' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Preflight Request : HTTP Message ๋ฅผ ํตํ header ๊ณต๋ถ (0) | 2021.10.27 |
---|---|
์ง์ ์๋ฒ๋ฅผ ๋ง๋ค๋ฉด์ ๋ฐฐ์ด Location Header (0) | 2021.10.26 |
๋ธ๋ผ์ฐ์ ์ Node JS : ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค (์ถ๊ฐ์ค) (0) | 2021.10.20 |
Event Loop & Task queue ์ด๋ฒคํธ ๋ฃจํ์ ํ์คํฌ ํ (0) | 2021.09.18 |
URI ๊ทธ๋ฆฌ๊ณ URL, URN (0) | 2021.09.11 |
๋๊ธ