λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
πŸ’» Computer Science/- Network

[HTTP-Header] HTTP Request Header :: μš”μ²­ 헀더

by Wonit 2020. 10. 9.

https://docs.trafficserver.apache.org/

HTTP μš”μ²­ ν—€λ”λŠ” μ„œλ²„λ‘œ μš”μ²­ν•  λ°μ΄ν„°μ˜ 정보가 λ‹΄κ²¨μžˆλŠ” 헀더이닀.

 

보톡 Fetch될 λ¦¬μ†ŒμŠ€λ‚˜ ν΄λΌμ΄μ–ΈνŠΈ μžμ²΄μ— λŒ€ν•œ 정보λ₯Ό ν¬ν•¨ν•œλ‹€.

 

μ—¬κΈ°μ„œ μš°λ¦¬λŠ” 자주 μ‚¬μš©ν•˜λŠ” 유λͺ…ν•œ 헀더에 λŒ€ν•΄μ„œλ§Œ μ•Œμ•„λ³Ό 것이닀.


ν—€λ”λŠ” 크둬의 개발자 λ„κ΅¬μ˜ λ„€νŠΈμ›Œν¬ νƒ­μ—μ„œ 헀더듀을 확인할 수 μžˆλ‹€.

μš”μ²­ 헀더 Request Header

μš°λ¦¬κ°€ μ΄λ²ˆμ— 닀뀄볼 μš”μ²­ ν—€λ”λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • Host
  • User-Agent
  • Accept
  • Authorization
  • Origin
  • Referer

 

Host

μ„œλ²„μ˜ 도메인 λ„€μž„κ³Ό μ„œλ²„κ°€ ν˜„μž¬ Listening 쀑인 TCP 포트λ₯Ό μ§€μ •ν•œλ‹€.

 

λ§Œμ•½ ν¬νŠΈκ°€ μ§€μ •λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μš”μ²­λœ μ„œλ²„μ˜ κΈ°λ³Έ 포트λ₯Ό μ˜λ―Έν•œλ‹€. (HTTP URL은 80)

 

Host ν—€λ”λŠ” λ°˜λ“œμ‹œ ν•˜λ‚˜κ°€ μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€.

 

λ§Œμ•½ ν•œ κ°œκ°€ μ•„λ‹ˆλΌ μ—†κ±°λ‚˜ μ—¬λŸ¬κ°œλ©΄ 400(Bad Request) μƒνƒœ μ½”λ“œκ°€ μ „μ†‘λœλ‹€.

Host: <host>:<port_Optional>

// Host: developer.cdn.mozilla.net

 

User-Agent

ν˜„μž¬ μ‚¬μš©μžκ°€ μ–΄λ–€ ν΄λΌμ΄μ–ΈνŠΈ(μš΄μ˜μ²΄μ œμ™€ λΈŒλΌμš°μ €λ₯Ό ν¬ν•¨ν•œ)λ₯Ό μ΄μš©ν•΄ μš”μ²­μ„ λ³΄λƒˆλŠ”μ§€ 확인할 수 μžˆλ‹€.

User-Agent: <product> / <product-version> <comment>

// Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
// Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1
// Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

 

Accept

AcceptλŠ” μš”μ²­μ„ 보낼 λ•Œ μ„œλ²„μ—κ²Œ μ–΄λ–€ ν„°μž…μœΌλ‘œ 응닡을 λ³΄λ‚΄μ€¬μœΌλ©΄ μ’‹κ² λ‹€κ³  λͺ…μ‹œν•œλ‹€.


예λ₯Ό λ“€μ–΄

Accept: text/html

을 μš”μ²­ ν—€λ”λ‘œ 보내면 HTML ν˜•μ‹μΈ 응닡을 μ²˜λ¦¬ν•˜κ² λ‹€λŠ” λœ»μ΄λ‹€.


μ΄λŠ” 콀마둜 μ—¬λŸ¬ νƒ€μž…μ„ λ™μ‹œμ— 적어쀄 μˆ˜λ„ 있으며 μ™€μΌλ“œμΉ΄λ“œμΈ * μ•„μŠ€ν…Œλ¦¬ν¬λ‘œ 보낼 μˆ˜λ„ μžˆλ‹€.

 

μ΄λŸ¬ν•œ Acceptμ—λŠ” λ‹€μŒκ³Ό 같은 것듀도 포함될 수 μžˆλ‹€.

  1. Accept-Charset : μ›ν•˜λŠ” Character Set
  2. Accept-Language : μ›ν•˜λŠ” Lang
  3. Accept-Encoding : μ›ν•˜λŠ” Encoding 방식

λŒ€μΆ© λΈŒλΌμš°μ €λŠ” μ•Œμ•„μ„œ μ„€μ •ν•΄μ„œ λ³΄λŠλŠ” Acceptκ°€ μžˆλ‹€.


무슨 헀더λ₯Ό 적어야할지 λͺ¨λ₯΄κ² λ‹€λ©΄ λΈŒλΌμš°μ €κ°€ μ‚¬μš©ν•˜λŠ” 것을 μ΄μš©ν•˜μž.

 

Authorization

Authorization ν—€λ”λŠ” μ‚¬μš©μžκ°€ μ„œλ²„μ— μΈκ°€λœ μ‚¬μš©μžμž„μ„ 증λͺ…ν•  λ•Œ μ‚¬μš©ν•œλ‹€.


보톡 JWTλ‚˜ Bearer 토큰을 μ„œλ²„λ‘œ 보낼 λ•Œ μ‚¬μš©ν•˜λ©° 자격이 증λͺ…λ˜μ§€ μ•Šμ„ 경우 401 Unauthorized μƒνƒœλ₯Ό μ•Œλ €μ€€λ‹€.

Authorization: <type> <credentials>

// Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
  • type : 인증 νƒ€μž…μœΌλ‘œ 보톡 Basicκ³Ό Bearer을 μ‚¬μš©ν•œλ‹€.
  • credentials : μ‚¬μš©μžλͺ…κ³Ό λΉ„λ°€λ²ˆν˜Έ, λ‹€λ₯Έ νŽ˜μ΄λ‘œλ“œκ°€ ν•©μ²˜μ Έ base64둜 μΈμ½”λ”©λœ κ°’

Base64 인코딩은 μ•”ν˜Έν™”λ‚˜ 해싱을 μ˜λ―Έν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€! 이 방법은 인증에 λŒ€ν•΄μ„œ 문자λ₯Ό κ·ΈλŒ€λ‘œ λ³΄λ‚΄λŠ” 것과 λ™μΌν•˜λ‹€κ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (base64인코딩은 λ³΅ν˜Έν™” κ°€λŠ₯). Basic 인증을 ν•˜λŠ” 경우 HTTPS둜 μ ‘μ†ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. by MDN

 

Origin

POST와 같은 μš”μ²­μ„ 보낼 λ•Œ, μš”μ²­μ΄ μ–΄λŠ μ£Όμ†Œμ—μ„œ μ‹œμž‘λ˜μ—ˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.


μ—¬κΈ°μ„œ μš”μ²­μ„ 보낸 μ£Όμ†Œμ™€ λ°›λŠ” μ£Όμ†Œκ°€ λ‹€λ₯΄λ©΄ CORS λ¬Έμ œκ°€ λ°œμƒν•˜λŠ”λ°, CORS에 λŒ€ν•΄ λͺ¨λ₯΄κ² λ‹€λ©΄ CORSλž€?μ΄λΌλŠ” κΈ€λ‘œ κ°€μ„œ ν™•μΈν•˜κΈΈ λ°”λž€λ‹€.

Origin: null
Origin: <scheme> "://" <hostname> [ ":" <port> ]

// Origin: https://developer.mozilla.org
  • scheme : μ‚¬μš©ν•˜λŠ” ν”„λ‘œν† μ½œ
  • hostname : μ„œλ²„μ˜ 이름 λ˜λŠ” ip
  • port : μ„œλ²„μ— μ—΄λ¦° tcp 포트

 

Referer

μ΄λŠ” 이 νŽ˜μ΄μ§€ 이전에 λŒ€ν•œ μ£Όμ†Œκ°€ λ‹΄κ²¨μžˆλ‹€.


이 헀더λ₯Ό μ΄μš©ν•˜λ©΄ μ–΄λ–€ νŽ˜μ΄μ§€μ—μ„œ μ§€κΈˆ νŽ˜μ΄μ§€λ‘œ μ™”λŠμ§€λ₯Ό μ•Œ 수 μžˆμ–΄μ„œ μ• λ„λ¦¬ν‹±μŠ€λ₯Ό ν•˜λŠ”λ° 많이 μ‚¬μš©λœλ‹€.

Referer: <url>

Referer: https://developer.mozilla.org/en-US/docs/Web/JavaScript

λŒ“κΈ€