๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Front-end/Browser

Preflight Request : HTTP Message ๋ฅผ ํ†ตํ•œ header ๊ณต๋ถ€

by ciocio 2021. 10. 27.

๐Ÿ“  HTTP message ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ ์ „, Method ์™€ Header ๊ทธ๋ฆฌ๊ณ  CORS ์ •์ฑ…์„ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ฉด ์ข‹๋‹ค.

 

2021.09.10 - [๊ฐœ๋ฐœ ๊ณต๋ถ€/Browser] - Client - Server : SOP์™€ CORS

 

Client - Server : SOP์™€ CORS

๐Ÿ“Œ SOP? (Same Origin Policy) ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์œผ๋กœ, ํ•˜๋‚˜์˜ Origin์—์„œ ๋กœ๋“œ๋œ ๋ฌธ์„œ๋‚˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹ค๋ฅธ Origin์˜ ์ž์›๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๊ฒƒ. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” Origin์€ ์•„๋ž˜ 3๊ฐ€์ง€ ์š”์†Œ๋ฅผ ์กฐํ•ฉ

code-designer.tistory.com

 

 

๐Ÿ“Œ  Preflight Request

 

preflight request ๋Š” Preflight ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„, ๋ณธ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

 

 

โ—พ  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 ๊ณต๋ถ€

 

Simple Request : HTTP Message ๋ฅผ ํ†ตํ•œ header ๊ณต๋ถ€

๐Ÿ“ HTTP message ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ ์ „, Method์™€ Header ๊ทธ๋ฆฌ๊ณ  CORS ์ •์ฑ…์„ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ฉด ์ข‹๋‹ค. 2021.09.10 - [๊ฐœ๋ฐœ ๊ณต๋ถ€/Browser] - Client - Server : SOP์™€ CORS Client - Server : SOP์™€ CORS ๐Ÿ“Œ SOP? (Same Orig..

code-designer.tistory.com

 

preflight ์—†์ด ๋ณธ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ์™€

preflight ์ดํ›„ ๋ณธ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ์˜ HTTP Message ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ๋ญ˜๊นŒ ์‹ถ์–ด

์ „์ž์™€ ํ›„์ž๋ฅผ ๋น„๊ตํ•ด๋ดค๋‹ค.

 

 

โ—พ  HTTP Request 

 

   

preflight ์ดํ›„ ๋ณธ ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฒฝ์šฐ์—

Pragma header / Cache-Control header / Accept-Encoding header ๊ฐ€ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑ๋˜์—ˆ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ฐจ์ด๊ฐ€ ์—†์—ˆ๋‹ค.

 

 

โ—พ  HTTP Response 

 

 

preflight ์—†์ด ๋ณธ ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฒฝ์šฐ์™€ preflight ์ดํ›„์— ๋ณธ ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฒฝ์šฐ ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์—†์—ˆ๋‹ค. 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€