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

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

by ciocio 2021. 10. 22.

๐Ÿ“  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

 

 

๐Ÿ“Œ  Simple Request 

 

simple request ๋Š” Preflight ์—†์ด ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค

 

 

 

โ—พ  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 ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

โ—  ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ—ค๋”๋Š” ๋น„ํ‘œ์ค€์ด๋‹ค. ๋˜๋„๋ก์ด๋ฉด ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž  โ—

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€