HTTP Header

HTTP Header

  • HTTP λ©”μ‹œμ§€ μž‘μ„± μ‹œ 전솑에 ν•„μš”ν•œ 뢀가정보λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” κ·œμ•½

λ©”μ‹œμ§€ λ°”λ”” 헀더

body의 데이터(전달할 μ‹€μ œ 데이터)에 λŒ€ν•œ 뢀가정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” ν—€λ”λ‘œ, μš”μ²­ μ‹œ, 응닡 μ‹œ λͺ¨λ‘ μ‚¬μš©ν•œλ‹€.

μš”μ²­ μ‹œμ—λŠ” request body에 λŒ€ν•œ λΆ€κ°€ 정보, 응닡 μ‹œμ—λŠ” response body에 λŒ€ν•œ λΆ€κ°€ 정보λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

  • Content-Type: 데이터 ν˜•μ‹

    • ex) text/html, application/json, image/png

  • Content-Encoding: 데이터λ₯Ό μ••μΆ•ν•œλ‹€λ©΄ μ–΄λ–€ μ••μΆ• 방식을 μ‚¬μš©ν•˜λŠ”μ§€

    • μš”μ²­ μ‹œ ν•΄λ‹Ή 헀더λ₯Ό μ‚¬μš©ν•˜λ©΄ 응닡 데이터도 ν•΄λ‹Ή μ••μΆ• λ°©μ‹μœΌλ‘œ μ••μΆ•λ˜μ–΄μ„œ μ˜¨λ‹€.

    • ex) gzip

  • Content-Language: 데이터가 μ–΄λ–€ μ–Έμ–΄λ‘œ 이루어져 μžˆλŠ”μ§€

    • ex) ko, en

  • Content-Length: λ°μ΄ν„°μ˜ 길이 (숫자둜 λ‚˜νƒ€λƒ„)

컨텐츠 ν˜‘μƒ(Content Negotiation) 헀더

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ λ°›κ³ μž ν•˜λŠ” 데이터에 λŒ€ν•΄ μ•Œλ €μ£ΌκΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν—€λ”λ‘œ, μš”μ²­ μ‹œ μ‚¬μš©ν•œλ‹€.

  • Accept: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„ ν˜Έν•˜λŠ” λ―Έλ””μ–΄ νƒ€μž…

  • Accept-Charset: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„ ν˜Έν•˜λŠ” 문자 인코딩 νƒ€μž…

  • Accept-Encoding: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„ ν˜Έν•˜λŠ” μ••μΆ• 인코딩 νƒ€μž…

  • Accept-Language: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„ ν˜Έν•˜λŠ” μ–Έμ–΄

컨텐츠 ν˜‘μƒμ˜ Quality Value(q)

컨텐츠 ν˜‘μƒμ—μ„œλŠ” μ„œλ²„μ— μ–΄λ–€ νƒ€μž…μ˜ λ¦¬μ†ŒμŠ€κ°€ μžˆλŠ”μ§€ λͺ¨λ₯΄λ―€λ‘œ, λ°›κ³  싢은 νƒ€μž…μ„ μ—¬λŸ¬ 개 λ‚˜μ—΄ν•˜κ³  νƒ€μž… κ°„ μš°μ„ μˆœμœ„λ₯Ό μ„€μ •ν•  수 μžˆλ‹€. 이 μš°μ„ μˆœμœ„ 값을 Quality Value라고 ν•˜λ©°, q둜 λ‚˜νƒ€λ‚Έλ‹€.

0λΆ€ν„° 1κΉŒμ§€ μ†Œμˆ˜μ μœΌλ‘œ μ„€μ • κ°€λŠ₯ν•˜λ©°, 값이 클 수둝 μš°μ„ μˆœμœ„κ°€ λ†’λ‹€. q 값을 μƒλž΅ν•œ 경우 μžλ™μœΌλ‘œ 1둜 μ„€μ •λœλ‹€.

ex) Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8;en;q=0.7 ν—€λ”μ—μ„œ 각 μ–Έμ–΄μ˜ μš°μ„ μˆœμœ„λŠ”?

  • ko-KR: μƒλž΅ν–ˆμœΌλ―€λ‘œ q=1이 되고 κ°€μž₯ λ†’λ‹€.

  • ko: q=0.9μ΄λ―€λ‘œ 두 번째

  • en-US: q=0.8μ΄λ―€λ‘œ μ„Έ 번째

  • en: q=0.7μ΄λ―€λ‘œ λ„€ 번째

μ„œλ²„μ—μ„œ 컨텐츠 ν˜‘μƒ 헀더에 μ—†λŠ” λ¦¬μ†ŒμŠ€λ°–μ— 쀄 수 μ—†λŠ” κ²½μš°μ—λŠ” μ„œλ²„μ—μ„œ μ •ν•΄λ‘” μš°μ„ μˆœμœ„μ— μ˜ν•΄ λ¦¬μ†ŒμŠ€κ°€ μ „λ‹¬λœλ‹€. (μ—†λ‹€κ³  전달이 μ•ˆ λ˜μ§€λŠ” μ•ŠλŠ”λ‹€λŠ” 것!)

μš”μ²­ 헀더

주둜 ν΄λΌμ΄μ–ΈνŠΈμ˜ νŠΉμ • 정보λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 헀더

  • Referer: ν•΄λ‹Ή μš”μ²­ νŽ˜μ΄μ§€μ˜ 이전 μ›Ή νŽ˜μ΄μ§€ μ£Όμ†Œ (λ’€λ‘œκ°€κΈ° μ‹œ λ‚˜νƒ€λ‚  URI)

    • 데이터 λΆ„μ„μ—μ„œ νŠΉμ • νŽ˜μ΄μ§€μ˜ μœ μž… 경둜 뢄석을 μœ„ν•΄ 자주 μ‚¬μš©

  • User-Agent: ν΄λΌμ΄μ–ΈνŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(ex: λΈŒλΌμš°μ €) 정보

    • 각 λΈŒλΌμš°μ € 별 톡계 데이터λ₯Ό 얻을 수 μžˆλ‹€.

  • Host: μš”μ²­ν•œ 호슀트(μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 도메인) 정보

    • 물리적으둜 ν•˜λ‚˜μ˜ μ„œλ²„(λ˜λŠ” IP)μ—μ„œ μ—¬λŸ¬ λ„λ©”μΈμ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ²˜λ¦¬ν•˜λŠ” κ²½μš°λ„ μžˆμ–΄ ν•΄λ‹Ή 헀더λ₯Ό 톡해 μ–΄λ–€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ „λ‹¬λ˜μ–΄μ•Ό ν•˜λŠ” HTTP λ©”μ‹œμ§€μΈμ§€λ₯Ό κ²°μ •ν•œλ‹€. λ•Œλ¬Έμ— HTTP Specμ—μ„œλŠ” ν•΄λ‹Ή 헀더λ₯Ό ν•„μˆ˜ ν—€λ”λ‘œ μ§€μ •ν•˜κ³  μžˆλ‹€.

응닡 헀더

  • Server: ν΄λΌμ΄μ–ΈνŠΈμ˜ User-Agent처럼, μ„œλ²„μ˜ μ†Œν”„νŠΈμ›¨μ–΄ 정보λ₯Ό λ‚˜νƒ€λƒ„

    • 이 λ•Œ μ„œλ²„λŠ” μ‹€μ œ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” origin μ„œλ²„

  • Date: 응닡 λ©”μ‹œμ§€κ°€ μƒμ„±λœ λ‚ μ§œ/μ‹œκ°„

응닡 μƒνƒœ μ½”λ“œ κ΄€λ ¨ 헀더

  • Allow: 405 Method Not Allowed 응닡에 ν¬ν•¨λ˜λŠ” ν—€λ”λ‘œ, μ‚¬μš© κ°€λŠ₯ν•œ HTTP Methodλ₯Ό μ•Œλ €μ€Œ

  • Location: λ¦¬μ†ŒμŠ€μ˜ μœ„μΉ˜λ₯Ό μ•Œλ €μ£ΌλŠ” ν—€λ”λ‘œ, 두 κ°€μ§€ 경우 μ‚¬μš©

    • 201 Created와 ν•¨κ»˜ μ‚¬μš©: μƒˆλ‘­κ²Œ μƒμ„±λœ λ¦¬μ†ŒμŠ€μ˜ URI

    • 3xx(λ¦¬λ‹€μ΄λ ‰μ…˜ κ΄€λ ¨ μƒνƒœ μ½”λ“œ)와 ν•¨κ»˜ μ‚¬μš©: ν•΄λ‹Ή νŽ˜μ΄μ§€λ‘œ μš”μ²­μ„ μžλ™ λ¦¬λ‹€μ΄λ ‰μ…˜

  • Retry-After: 503 Service Unavailable 응닡 μ‹œ μ–Έμ œκΉŒμ§€ 이용 λΆˆκ°€λŠ₯인지λ₯Ό μ•Œλ €μ€Œ

일뢀 데이터 전솑 헀더

컨텐츠 μ „λΆ€λ₯Ό λ°›μ•„λ³΄λŠ” λŒ€μ‹  μΌλΆ€λ§Œ λ°›μ•„λ³Ό 수 μžˆλ„λ‘ ν•˜λŠ” 헀더

λ²”μœ„ μš”μ²­μ„ ν•  경우 λ©”μ‹œμ§€ λ°”λ”” 헀더 Content-LengthλŠ” μ‚¬μš©ν•˜μ§€ 말아야 ν•œλ‹€.

  • Transfer-Encoding: 응닡 데이터가 λΆ„ν•  μ „μ†‘λœλ‹€.

  • Range: μš”μ²­ μ‹œμ— μ‚¬μš©ν•˜λ©°, νŠΉμ • λ‹¨μœ„λ‘œ νŠΉμ • λ²”μœ„λ§ŒνΌ 데이터λ₯Ό 전솑할 것을 μš”μ²­ (λ‹¨μœ„λŠ” 주둜 bytes)

    • ex) Range: bytes=200-1000, 1001-2000, …

  • Content-Range: Range μš”μ²­μ— λŒ€ν•œ 응닡 μ‹œ μ‚¬μš©ν•˜λ©°, 전체 λ°”λ”” λ©”μ‹œμ§€μ— μ†ν•œ λΆ€λΆ„ λ©”μ‹œμ§€μ˜ μœ„μΉ˜λ₯Ό μ•Œλ €μ€Œ

    • ex) Content-Range: bytes 1001-2000 / 2000

인증 κ΄€λ ¨ 헀더

  • Set-Cookie: μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ μΏ ν‚€ 전달 (응닡 μ‹œ μ‚¬μš©)

  • Cookie: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ μ €μž₯된 μΏ ν‚€ 전달 (μš”μ²­ μ‹œ μ‚¬μš©)

  • Authorization: μš”μ²­ μ‹œ ν΄λΌμ΄μ–ΈνŠΈμ˜ 인증 정보λ₯Ό μ„œλ²„μ— 전달

  • WWW-Authenticate: 401 Unauthorized 응닡 μ‹œ ν•„μš”ν•œ 인증 방법을 μ„€λͺ…ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

좜처

MDN - HTTP 헀더

Last updated