7. Response Header Fields

응닡 헀더 ν•„λ“œλŠ” μ„œλ²„κ°€ status-line에 배치된 정보λ₯Ό λ„˜μ–΄ 응닡에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό 전달할 수 μžˆλ„λ‘ ν•œλ‹€. μ΄λŸ¬ν•œ 헀더 ν•„λ“œλŠ” μ„œλ²„μ— λŒ€ν•œ 정보, λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μΆ”κ°€ μ•‘μ„ΈμŠ€ λ˜λŠ” κ΄€λ ¨ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 정보λ₯Ό μ œκ³΅ν•œλ‹€.

7.1 Control Data

응닡 헀더 ν•„λ“œλŠ” μƒνƒœ μ½”λ“œλ₯Ό λ³΄μΆ©ν•˜κ±°λ‚˜ μΊμ‹œλ₯Ό μ§€μ‹œν•˜κ±°λ‚˜ ν΄λΌμ΄μ–ΈνŠΈμ— λ‹€μŒμ— μ–΄λ””λ‘œ κ°€μ•Ό ν•˜λŠ”μ§€ μ§€μ‹œν•˜λŠ” μ œμ–΄ 데이터λ₯Ό μ œκ³΅ν•  수 μžˆλ‹€.

7.1.1 Origination Date

7.1.1.1 Date/Time Formats

1995λ…„ μ΄μ „μ—λŠ” μ„œλ²„κ°€ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό ν†΅μ‹ ν•˜κΈ° μœ„ν•΄ 일반적으둜 μ‚¬μš©ν•˜λŠ” μ„Έ 가지 λ‹€λ₯Έ ν˜•μ‹μ΄ μžˆμ—ˆλ‹€. κΈ°μ‘΄ κ΅¬ν˜„κ³Όμ˜ ν˜Έν™˜μ„±μ„ μœ„ν•΄ μ„Έ 가지 λͺ¨λ‘ 여기에 μ •μ˜λ˜μ–΄ μžˆλ‹€. μ„ ν˜Έλ˜λŠ” ν˜•μ‹μ€ 인터넷 λ©”μ‹œμ§€ ν˜•μ‹[RFC5322]μ—μ„œ μ‚¬μš©ν•˜λŠ” λ‚ μ§œ 및 μ‹œκ°„ 규격의 fixed-length 및 single-zone λΆ€λΆ„ 집합이닀.

HTTP-date = IMF-fixdate / obs-date

μ„ ν˜Έν•˜λŠ” ν˜•μ‹μ˜ μ˜ˆλŠ”

Sun, 06 Nov 1994 08:49:37 GMT ; IMF-fixdate

μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 두 ν˜•μ‹μ˜ μ˜ˆλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format

  • HTTP 헀더 ν•„λ“œμ—μ„œ νƒ€μž„μŠ€νƒ¬ν”„ 값을 ꡬ문 λΆ„μ„ν•˜λŠ” μˆ˜μ‹ μžλŠ” μ„Έ 가지 HTTP-date ν˜•μ‹μ„ λͺ¨ 두 μˆ˜μš©ν•΄μ•Ό ν•œλ‹€.(MUST)

  • λ°œμ‹ μžκ°€ HTTP-date둜 μ •μ˜λœ ν•˜λ‚˜ μ΄μƒμ˜ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό ν¬ν•¨ν•˜λŠ” 헀더 ν•„λ“œλ₯Ό 생성할 λ•Œ, λ°œμ‹ μžλŠ” λ°˜λ“œμ‹œ IMF-fixdate ν˜•μ‹μœΌλ‘œ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό 생성해야 ν•œλ‹€.(MUST)

HTTP-date 값은 UTC(Coordinated Universal Time)의 μΈμŠ€ν„΄μŠ€λ‘œμ„œμ˜ μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€.

  • HTTP-dateλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•œλ‹€. λ°œμ‹ μžλŠ” 문법에 SP둜 ꡬ체적으둜 ν¬ν•¨λœ 곡간을 μ΄ˆκ³Όν•˜μ—¬ HTTP-date에 μΆ”κ°€ 곡백을 μƒμ„±ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

  • 두 자릿수λ₯Ό μ‚¬μš©ν•˜λŠ” rfc850-date ν˜•μ‹μ˜ νƒ€μž„μŠ€νƒ¬ν”„ 값을 λ°›λŠ” μ‚¬λžŒμ€ μ•žμœΌλ‘œ 50λ…„ 이상 κ²ƒμœΌλ‘œ λ³΄μ΄λŠ” νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό λ§ˆμ§€λ§‰ two-digitκ°€ κ°™μ•˜λ˜ 과거의 κ°€μž₯ 졜근 연도λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ²ƒμœΌλ‘œ 해석해야 ν•œλ‹€.(MUST)

μ°Έκ³ : date/time μŠ€νƒ¬ν”„ ν˜•μ‹μ— λŒ€ν•œ HTTP μš”κ΅¬ 사항은 ν”„λ‘œν† μ½œ 슀트림 λ‚΄μ˜ μ‚¬μš©μ—λ§Œ μ μš©λœλ‹€. μ‚¬μš©μž ν”„λ ˆμ  ν…Œμ΄μ…˜, μš”μ²­ 기둝 등에 μ΄λŸ¬ν•œ ν˜•μ‹μ„ μ‚¬μš©ν•  ν•„μš”λŠ” μ—†λ‹€.

7.1.1.2 Date

β€œDate” 헀더 ν•„λ“œλŠ” [RFC5322]의 Section 3.6.1μ—μ„œ μ •μ˜ν•œ Origination Date Field(orig-date)와 λ™μΌν•œ 의미λ₯Ό 가지며 λ©”μ‹œμ§€κ°€ λ°œμƒν•œ λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€. ν•„λ“œ 값은 Section 7.1.1.1μ—μ„œ μ •μ˜ν•œ HTTP-dateλ‹€.

Date = HTTP-date

예λ₯Όλ“€μ–΄,

Date: Tue, 15 Nov 1994 08:12:31 GMT

  • μ›μ„œλ²„λŠ” Coordinated Universal Time(UTC)μ—μ„œ ν˜„μž¬ μΈμŠ€ν„΄μŠ€μ˜ ν•©λ‹Ήν•œ κ·Όμ‚¬μΉ˜λ₯Ό μ œκ³΅ν•  수 μžˆλŠ” μ‹œκ³„κ°€ μ—†λŠ” 경우 Date 헀더 ν•„λ“œλ₯Ό λ³΄λ‚΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

  • 응닡이 μƒνƒœ μ½”λ“œμ˜ 1xx (Informational) λ˜λŠ” 5xx (Server Error) 등급인 경우 μ›μ„œλ²„λŠ” Date 헀더 ν•„λ“œλ₯Ό λ³΄λ‚Όμˆ˜ μžˆλ‹€.(MAY)

  • μ›μ„œλ²„λŠ” λ‹€λ₯Έ λͺ¨λ“  경우 Date 헀더 ν•„λ“œλ₯Ό 전솑해야 ν•œλ‹€.(MUST)

  • Date 헀더 ν•„λ“œ 없이 μ‹œκ³„μ™€ 응닡 λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜λŠ” μˆ˜μ‹ μžλŠ” μˆ˜μ‹ λœ μ‹œκ°„μ„ κΈ°λ‘ν•˜κ³  ν•΄λ‹Ή Date 헀더 ν•„λ“œκ°€ μΊμ‹œλ˜κ±°λ‚˜ λ‹€μš΄μŠ€νŠΈλ¦Όμ—μ„œ μ „λ‹¬λ˜λŠ” 경우 λ©”μ‹œμ§€μ˜ 헀더 뢀문에 ν•΄λ‹Ή Date 헀더 ν•„λ“œλ₯Ό μΆ”κ°€ν•΄μ•Ό ν•œλ‹€.(MUST)

7.1.2 Location

β€œLocation” 헀더 ν•„λ“œλŠ” 응닡과 κ΄€λ ¨λœ νŠΉμ • λ¦¬μ†ŒμŠ€λ₯Ό μ°Έμ‘°ν•˜κΈ° μœ„ν•΄ 일뢀 응닡에 μ‚¬μš©λœλ‹€. κ΄€κ³„μ˜ μœ ν˜•μ€ μš”μ²­ λ©”μ„œλ“œμ™€ μƒνƒœ μ½”λ“œ 의미둠의 쑰합에 μ˜ν•΄ μ •μ˜λœλ‹€.

201 (Created) μ‘λ‹΅μ˜ 경우, Location 값은 μš”μ²­μ— μ˜ν•΄ μƒμ„±λœ κΈ°λ³Έ λ¦¬μ†ŒμŠ€λ₯Ό λ§ν•œλ‹€. 3xx (Redirection) μ‘λ‹΅μ˜ 경우, Location 값은 μš”μ²­μ„ μžλ™μœΌλ‘œ λ¦¬λ””λ ‰μ…˜ν•˜κΈ° μœ„ν•œ κΈ°λ³Έ λŒ€μƒ λ¦¬μ†ŒμŠ€λ₯Ό 가리킨닀.

7.1.3 Retry-After

μ„œλ²„λŠ” β€œRetry-After” 헀더 ν•„λ“œλ₯Ό 보내 μ‚¬μš©μž μ—μ΄μ „νŠΈκ°€ 후속 μš”μ²­μ„ ν•˜κΈ° 전에 μ–Όλ§ˆλ‚˜ κΈ°λ‹€λ €μ•Ό ν•˜λŠ”μ§€ ν‘œμ‹œν•œλ‹€. 503 (Service Unavailable) 응닡과 ν•¨κ»˜ μ „μ†‘λœ 경우 Retry-After μ—λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  수 없을 κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λŠ” 기간이 ν‘œμ‹œλœλ‹€.

두가지 μ‚¬μš© μ˜ˆμ‹œλ‘œ

Retry-After: Fri, 31 Dec 1999 23:59:59 GMT Retry-After: 120

7.1.4 Vary

μ‘λ‹΅μ˜ β€œVary” 헀더 ν•„λ“œλŠ” λ©”μ„œλ“œ, Host 헀더 ν•„λ“œ 및 μš”μ²­ λŒ€μƒμ„ μ œμ™Έν•˜κ³  μš”μ²­ λ©”μ‹œμ§€μ˜ μ–΄λ–€ 뢀뢄이 이 응닡을 μ„ νƒν•˜κ³  λ‚˜νƒ€λ‚΄λŠ” μ›μ„œλ²„μ˜ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을 λ―ΈμΉ  수 μžˆλŠ”μ§€ μ„€λͺ…ν•œλ‹€.

  • ν”„λ½μ‹œλŠ” β€œ*” 값을 가진 Vary ν•„λ“œλ₯Ό μƒμ„±ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

μ˜ˆμ‹œλ‘œ

Vary: accept-encoding, accept-language

μ›μ„œλ²„κ°€ 이 응닡에 λŒ€ν•œ λ‚΄μš©μ„ μ„ νƒν•˜λ©΄μ„œ μš”μ²­μ˜ Accept-Encoding 및 Accept-Language ν•„λ“œ(λ˜λŠ” ν•΄λ‹Ή ν•„λ“œ μ—†μŒ)λ₯Ό κ²°μ • μš”μΈμœΌλ‘œ μ‚¬μš©ν–ˆμ„ 수 μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

μ›μ„œλ²„λŠ” 두 가지 λͺ©μ μ„ μœ„ν•΄ ν•„λ“œ λͺ©λ‘κ³Ό ν•¨κ»˜ Varyλ₯Ό 보낼 수 μžˆλ‹€.

1. μΊμ‹œ μˆ˜μ‹ μžμ—κ²Œ, μ΄ν›„μ˜ μš”μ²­μ΄ μ›λž˜ μš”μ²­κ³Ό λ™μΌν•œ 값을 가지지 μ•ŠλŠ” ν•œ, μ΄ν›„μ˜ μš”μ²­μ„ λ§Œμ‘±μ‹œν‚€κΈ° μœ„ν•΄ 이 응닡을 μ‚¬μš©ν•΄μ„œλŠ” μ•ˆλœλ‹€λŠ” 것(MUST NOT)을 ν†΅μ§€ν•œλ‹€ ([RFC7234]의 Section 4.1). 즉, VaryλŠ” μ €μž₯된 μΊμ‹œ ν•­λͺ©μœΌλ‘œ μƒˆ μš”μ²­μ„ μΌμΉ˜μ‹œν‚€λŠ”λ° ν•„μš”ν•œ μΊμ‹œ ν‚€λ₯Ό ν™•μž₯ν•œλ‹€.

2. μ‚¬μš©μž μ—μ΄μ „νŠΈ μˆ˜μ‹ μžμ—κ²Œ 이 응닡은 μ½˜ν…μΈ  ν˜‘μƒ(Section 5.3)의 λŒ€μƒμ΄λ©°, λ‚˜μ—΄λœ 헀더 ν•„λ“œμ— μΆ”κ°€ νŒŒλΌλ―Έν„°κ°€ 제곡될 경우 후속 μš”μ²­μœΌλ‘œ λ‹€λ₯Έ ν‘œν˜„μ΄ 전솑될 수 μžˆμŒμ„ ν†΅μ§€ν•œλ‹€.

7.2 Validator Header Fields

κ²€μ¦μž 헀더 ν•„λ“œλŠ” μ„ νƒλœ ν‘œν˜„μ— λŒ€ν•œ 메타데이터λ₯Ό μ „μ†‘ν•œλ‹€(Section 3).

예λ₯Ό λ“€μ–΄ 201 (Created) μ‘λ‹΅μ˜ ETag 헀더 ν•„λ“œλŠ” μƒˆλ‘œ μƒμ„±λœ λ¦¬μ†ŒμŠ€μ˜ ν‘œν˜„μ— λŒ€ν•œ entity-tagλ₯Ό μ „λ‹¬ν•˜μ—¬, 이후 쑰건뢀 μš”μ²­μ— μ‚¬μš©λ˜μ–΄ β€œlost update” 문제λ₯Ό 방지할 수 μžˆλ‹€ [RFC7232].

7.3 Authentication Challenges

인증 λ¬Έμ œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ ν–₯ν›„ μš”μ²­ μ‹œ 인증 자격 증λͺ…을 μ œκ³΅ν•  수 μžˆλŠ” λ©”μ»€λ‹ˆμ¦˜μ„ λ‚˜νƒ€λ‚Έλ‹€.

7.4 Response Context

λ‚˜λ¨Έμ§€ 응닡 헀더 ν•„λ“œλŠ” 이후 μš”μ²­μ— μ‚¬μš©ν•  수 μžˆλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μžμ„Έν•œ 정보λ₯Ό μ œκ³΅ν•œλ‹€.

7.4.1 Allow

β€œAllow” 헀더 ν•„λ“œμ—λŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€κ°€ μ§€μ›ν•˜λŠ” κ²ƒμœΌλ‘œ μ•Œλ €μ§„ λ©”μ„œλ“œ 집합이 λ‚˜μ—΄λœλ‹€. 이 ν•„λ“œμ˜ λͺ©μ μ€ μˆ˜μ‹ μžμ—κ²Œ λ¦¬μ†ŒμŠ€μ™€ κ΄€λ ¨λœ μœ νš¨ν•œ μš”μ²­ λ©”μ„œλ“œλ₯Ό μ•Œλ¦¬λŠ” 것이닀.

  • μ›μ„œλ²„λŠ” 405 (Method Not Allow) μ‘λ‹΅μ—μ„œ Allow ν•„λ“œλ₯Ό 생성해야 ν•œλ‹€.(MUST)

  • ν”„λ½μ‹œλŠ” Allow 헀더 ν•„λ“œλ₯Ό μˆ˜μ •ν•΄μ„œλŠ” μ•ˆ 된.(MUST NOT)

7.4.2 Server

β€œServer” 헀더 ν•„λ“œμ—λŠ” μš”μ²­μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ›μ„œλ²„κ°€ μ‚¬μš©ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ— λŒ€ν•œ 정보가 λ“€μ–΄ μžˆλŠ”λ°, 이 μ†Œν”„νŠΈμ›¨μ–΄λŠ” 보고된 μƒν˜Έμš΄μš©μ„± 문제의 λ²”μœ„λ₯Ό μ‹λ³„ν•˜λŠ” 데 도움을 μ£Όκ³ , νŠΉμ • μ„œλ²„ μ œν•œμ„ ν”Όν•˜κΈ° μœ„ν•΄ μž‘μ—…ν•˜κ±°λ‚˜ μš”μ²­μ„ λ§žμΆ€ν™”ν•˜λ©°, μ„œλ²„ λ˜λŠ” 운영체제 μ‚¬μš©κ³Ό κ΄€λ ¨ 된 뢄석을 μœ„ν•΄ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ’…μ’… μ‚¬μš©ν•œλ‹€.

μ˜ˆμ‹œ

Server: CERN/3.0 libwww/2.17

Last updated

Was this helpful?