๐ HTTP message ๋ฅผ ์ดํด๋ณด๊ธฐ ์ , Method ์ Header ๊ทธ๋ฆฌ๊ณ CORS ์ ์ฑ ์ ์ง๊ณ ๋์ด๊ฐ๋ฉด ์ข๋ค.
2021.09.10 - [๊ฐ๋ฐ ๊ณต๋ถ/Browser] - Client - Server : SOP์ CORS
๐ Preflight Request
โพ HTTP Request : Preflight
โ Access-Control-Request-Method : <method>
Access-Control-Request-Method ๋ preflight ์์ฒญ์ ์ฐ์ด๋ header ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ (๊ณง)๋ณด๋ผ ๋ณธ ์์ฒญ์ ์ฐ์ผ method ๋ฅผ ๋ฏธ๋ฆฌ ์๋ ค์ฃผ๋ ์ญํ ์ ๋ด๋นํ๊ณ ์๋ค.
๋ณธ ์์ฒญ ๋ณด๋ด๊ธฐ ์ ์ "์ด๋ฐ ๋ฉ์๋ ์์ฒญ ํ ๊ฑฐ์ผ~?!" ์๋ฒ์ ๋ช ์ํด์ฃผ๋ ์ ๋.
์ด ํค๋๋ preflight ์์ฒญ์ ์์ด ํ์์ ์ด๋ค.
โ Access-Control-Request-Headers : <header-name>, <header-name>, ...
Access-Control-Request-Headers ๋ preflight ์์ฒญ์ ์ฐ์ด๋ header ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ณด๋ผ ์๋ ์๋ HTTP header ๋ค์ ๋ฏธ๋ฆฌ ์๋ ค์ฃผ๋ ์ญํ ์ ๋ด๋นํ๊ณ ์๋ค.
๋ณธ ์์ฒญ ๋ณด๋ด๊ธฐ ์ ์ "์์ผ๋ก ์ด๋ฐ ํค๋๋ค์ด ๊ฐ๊ฑฐ์ผ~?!" ์๋ฒ์ ๋ช ์ํด์ฃผ๋ ์ ๋.
โพ HTTP Response : Preflight
โ Access-Control-Allow-Methods : <method>, <method>, ...
โ Access-Control-Allow-Methods : *
Access-Control-Allow-Headers ๋ preflight ์์ฒญ์ ๋ํ ์๋ต์ ์ฌ์ฉ๋๋ header ์ด๋ค.
๋ณธ ์์ฒญ๋ ์ฌ์ฉํ ์ ์๋ HTTP method ๋ค์ ๋ชฉ๋ก์ ๋์ดํ๋ค.
โ Access-Control-Allow-Headers : <header-name>[ , <header-name> ]*
โ Access-Control-Allow-Headers : *
Access-Control-Allow-Headers ๋ preflight ์์ฒญ์ ๋ํ ์๋ต์ ์ฌ์ฉ๋๋ header ์ด๋ค.
๋ณธ ์์ฒญ๋ ์ฌ์ฉํ ์ ์๋ HTTP header ๋ค์ ๋ชฉ๋ก์ ๋์ดํ๋ค.
๐ Simple Request
preflight ์์ฒญ์ ์ฑ๊ณต์ ์ธ ์๋ต์ ๋ฐ์๋ค๋ฉด, ๋ณธ ์์ฒญ์ simple request ์ ๋์ผํ ๊ณผ์ ์ ๊ฑฐ์ณ ์๋ต์ ๋ฐ๊ฒ ๋๋ค.
ํด๋น ๊ณผ์ ์ ๋ํ ๋ด์ฉ์ ๊ธ๋ก ์์ฑํด๋จ์ผ๋ ์ฐธ๊ณ ์ฐธ๊ณ :)
2021.10.22 - [๊ฐ๋ฐ ๊ณต๋ถ/Browser] - Simple Request : HTTP Message ๋ฅผ ํตํ header ๊ณต๋ถ
preflight ์์ด ๋ณธ ์์ฒญ์ ๋ณด๋์ ๋์
preflight ์ดํ ๋ณธ ์์ฒญ์ ๋ณด๋์ ๋์ HTTP Message ๊ฐ์ ์ฐจ์ด๊ฐ ๋ญ๊น ์ถ์ด
์ ์์ ํ์๋ฅผ ๋น๊ตํด๋ดค๋ค.
โพ HTTP Request
preflight ์ดํ ๋ณธ ์์ฒญ์ ๋ณด๋ธ ๊ฒฝ์ฐ์
Pragma header / Cache-Control header / Accept-Encoding header ๊ฐ ์ถ๊ฐ๋ก ์์ฑ๋์๊ณ ๋๋จธ์ง๋ ์ฐจ์ด๊ฐ ์์๋ค.
โพ HTTP Response
preflight ์์ด ๋ณธ ์์ฒญ์ ๋ณด๋ธ ๊ฒฝ์ฐ์ preflight ์ดํ์ ๋ณธ ์์ฒญ์ ๋ณด๋ธ ๊ฒฝ์ฐ ๊ฐ์ ์ฐจ์ด๊ฐ ์์๋ค.
๋๊ธ