5. Request Header Fields

ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­ 헀더 ν•„λ“œλ₯Ό 보내 μš”μ²­ μ»¨ν…μŠ€νŠΈμ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό μ œκ³΅ν•˜κ³ , λŒ€μƒ λ¦¬μ†ŒμŠ€ μƒνƒœμ— 따라 μš”μ²­μ„ μ‘°κ±΄λΆ€λ‘œ λ§Œλ“€λ©°, 응닡에 λŒ€ν•œ κΈ°λ³Έ ν˜•μ‹μ„ μ œμ•ˆν•˜κ±°λ‚˜, 인증 자격 증 λͺ…을 μ œκ³΅ν•˜κ±°λ‚˜, μ˜ˆμƒ μš”μ²­ 처리λ₯Ό μˆ˜μ •ν•œλ‹€.

5.1 Controls

Controls은 μš”μ²­μ˜ νŠΉμ • 처리λ₯Ό μ§€μ‹œν•˜λŠ” μš”μ²­ 헀더 ν•„λ“œλ‹€.

5.1.1 Expect

μš”μ²­μ˜ β€œExpect” 헀더 ν•„λ“œλŠ” μš”μ²­μ„ μ μ ˆν•˜κ²Œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ„œλ²„κ°€ 지원해야 ν•˜λŠ” νŠΉμ • λ™μž‘(κΈ°λŒ€μΉ˜)을 λ‚˜νƒ€λ‚Έλ‹€. 이 λͺ…세에 μ˜ν•΄ μ •μ˜λœ μœ μΌν•œ κΈ°λŒ€μΉ˜λŠ” 100-continue이닀.

Expect = "100-continue"

Expect field-valueλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ”λ‹€.

  • 100-continue μ΄μ™Έμ˜ Expect field-valueλ₯Ό μˆ˜μ‹ ν•˜λŠ” μ„œλ²„λŠ” 417 (Expectation Failed) μƒνƒœ μ½”λ“œλ‘œ μ‘λ‹΅ν•˜μ—¬ μ˜ˆμƒν•˜μ§€ λͺ»ν•œ κΈ°λŒ€μΉ˜λ₯Ό μΆ©μ‘±ν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.(MAY)

100-continueλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 이 μš”μ²­μ—μ„œ (μƒλ‹Ήνžˆ 큰) λ©”μ‹œμ§€ 본문을 보내렀고 ν•œλ‹€λŠ” 것을 μˆ˜μ‹ μžμ—κ²Œ μ•Œλ €μ£Όκ³ , μš”μ²­ 라인 및 헀더 ν•„λ“œκ°€ 즉각적인 성곡, λ¦¬λ‹€μ΄λ ‰νŠΈ λ˜λŠ” 였λ₯˜ 응닡을 μ•ΌκΈ°ν•˜κΈ°μ— μΆ©λΆ„ν•˜μ§€ μ•Šμ„ 경우 100 (Continue) 쀑간 응닡을 λ°›κΈ°λ₯Ό ν¬λ§ν•œλ‹€.

예λ₯Όλ“€μ–΄, λ‹€μŒμœΌλ‘œ μ‹œμž‘ν•˜λŠ” μš”μ²­μ—μ„œ

PUT /somewhere/fun HTTP/1.1 Host: origin.example.com Content-Type: video/h264 Content-Length: 1234567890987 Expect: 100-continue

ν΄λΌμ΄μ–ΈνŠΈκ°€ λΆˆν•„μš”ν•œ 데이터 μ „μ†‘μœΌλ‘œ νŒŒμ΄ν”„λ₯Ό μ±„μš°κΈ° μ‹œμž‘ν•˜κΈ° 전에 μ›μ„œλ²„κ°€ 401 (Unauthorized) λ˜λŠ” 405 (Method Not Allowed)와 같은 였λ₯˜ λ©”μ‹œμ§€λ‘œ μ¦‰μ‹œ 응닡할 수 μžˆλ„λ‘ ν—ˆμš©ν•œλ‹€.

  • ν΄λΌμ΄μ–ΈνŠΈλŠ” λ©”μ‹œμ§€ 본문을 ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” μš”μ²­μ—μ„œ 100-continue λ₯Ό μƒμ„±ν•΄μ„œλŠ” μ•ˆλœλ‹€.(MUST NOT)

  • 100 (Continue) 응닡은 HTTP/1.0 μ€‘κ°œμžλ₯Ό 톡해 전솑할 수 μ—†μœΌλ―€λ‘œ, ν•΄λ‹Ή ν΄λΌμ΄μ–ΈνŠΈλŠ” λ©”μ‹œμ§€ 본문을 보내기 전에 λ¬΄κΈ°ν•œμœΌλ‘œ κΈ°λ‹€λ €μ„œλŠ” μ•ˆ λœλ‹€.(SHOULD NOT)

  • HTTP/1.0 μš”μ²­μ—μ„œ 100-continueλ₯Ό μˆ˜μ‹ ν•˜λŠ” μ„œλ²„λŠ” ν•΄λ‹Ή κΈ°λŒ€μΉ˜λ₯Ό λ¬΄μ‹œν•΄μ•Ό ν•œλ‹€.(MUST)

  • 100 (Continue) 응닡을 μ „μ†‘ν•˜λŠ” μ„œλ²„λŠ” 컀λ„₯μ…˜μ΄ 쑰기에 μ’…λ£Œλ˜μ§€ μ•ŠλŠ” ν•œ λ©”μ‹œμ§€ 본문이 μˆ˜μ‹ λ˜κ³  처리되면 μ΅œμ’… μƒνƒœ μ½”λ“œλ₯Ό 전솑해야 ν•œλ‹€.(MUST)

  • μ›μ„œλ²„λŠ” request-line 및 헀더 ν•„λ“œλ§Œ κ²€μ‚¬ν•˜μ—¬ μƒνƒœλ₯Ό 확인할 수 μžˆλŠ” 경우, HTTP/1.1(λ˜λŠ” κ·Έ 이상) request-line 및 100-continueλ₯Ό ν¬ν•¨ν•˜κ³  μš”μ²­ λ©”μ‹œμ§€ 본문이 λ”°λ₯Ό κ²ƒμž„μ„ λ‚˜νƒ€λ‚΄ λŠ” 전체 헀더 뢀문을 μˆ˜μ‹ ν•œ ν›„ μ΅œμ’… μƒνƒœ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 응닡을 μ¦‰μ‹œ μ „μ†‘ν•˜κ±°λ‚˜, ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­μ˜ λ©”μ‹œμ§€ 본문을 보내도둝 μž₯λ €ν•˜κΈ° μœ„ν•΄ 100 (Continue) 응닡을 μ¦‰μ‹œ 전솑해야 ν•œλ‹€.(MUST)

  • μ›μ„œλ²„λŠ” 100(Continue) 응닡을 보내기 전에 λ©”μ‹œμ§€ 본문을 κΈ°λ‹€λ €μ„œλŠ” μ•ˆ 된

    λ‹€.(MUST NOT)

5.1.2 Max-Forwards

β€œMax-Forwards” 헀더 ν•„λ“œλŠ” μš”μ²­μ΄ ν”„λ‘μ‹œμ— μ˜ν•΄ μ „λ‹¬λ˜λŠ” 횟수λ₯Ό μ œν•œν•˜λŠ” TRACE (Section 4.3.8) 및 OPTION (Section 4.3.7) μš”μ²­ λ©”μ„œλ“œμ™€ λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•œλ‹€. μ΄λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‹€νŒ¨ν•œ κ²ƒμœΌλ‘œ λ³΄μ΄κ±°λ‚˜ 쀑간 체인의 λ£¨ν”„λ‘œ λ³΄μ΄λŠ” μš”μ²­μ„ μΆ”μ ν•˜λ €κ³  ν•  λ•Œ μœ μš©ν•  수 μžˆλ‹€.

Max-Forwards = 1*DIGIT

Max-Forwards 값은 이 μš”μ²­ λ©”μ‹œμ§€λ₯Ό 전달할 수 μžˆλŠ” 남은 횟수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ‹­μ§„μˆ˜ μ •μˆ˜λ‹€.

  • Max-Forwards 헀더 ν•„λ“œκ°€ ν¬ν•¨λœ TRACE λ˜λŠ” OPTIONS μš”μ²­μ„ μˆ˜μ‹ ν•œ 각 μ€‘κ°œμžλŠ” μš”μ²­μ„ μ „λ‹¬ν•˜κΈ° 전에 ν•΄λ‹Ή 값을 ν™•μΈν•˜κ³  κ°±μ‹ ν•΄μ•Ό ν•œλ‹€.(MUST)

  • μˆ˜μ‹ λœ 값이 0인 경우, μ€‘κ°œμžλŠ” μš”μ²­μ„ μ „λ‹¬ν•˜μ§€ μ•Šμ•„μ•Ό ν•˜λ©°,(MUST NOT)

  • λŒ€μ‹  μ€‘κ°œμžλŠ” μ΅œμ’… μˆ˜μ‹ μžλ‘œ 응닡해야 ν•œλ‹€.(MUST)

  • μˆ˜μ‹ ν•œ Max-Forwards 값이 0보닀 클 경우, μ€‘κ°œμžλŠ” μˆ˜μ‹ ν•œ 값이 Max-Forwards에 λŒ€ν•΄ μˆ˜μ‹  자의 μ΅œλŒ€ 지원 κ°’ λ˜λŠ” 1 κ°μ†Œν•˜κ±° ν•„λ“œ 값보닀 μž‘μ€ ν•„λ“œ 값을 μ‚¬μš©ν•˜μ—¬ μ „λ‹¬λœ λ©”μ‹œμ§€μ—μ„œ κ°±μ‹ λœ Max-Forwards ν•„λ“œλ₯Ό 생성해야 ν•œλ‹€.(MUST)

5.2 Conditionals

5.3 Content Negotiation

5.3.1 Quality Values

사전 ν˜‘μƒμ„ μœ„ν•œ λ§Žμ€ μš”μ²­ 헀더 ν•„λ“œλŠ” β€œq” (λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠμŒ)λΌλŠ” 곡톡 λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΄€λ ¨ μ½˜ν…μΈ μ˜ μ„ ν˜Έλ„μ— μƒλŒ€μ μΈ β€œweight”λ₯Ό ν• λ‹Ήν•œλ‹€. 이 κ°€μ€‘μΉ˜λ₯Ό β€œquality value"(λ˜λŠ” β€œqvalue”)이라고 ν•˜λŠ”λ°, 같은 λ§€κ°œλ³€μˆ˜ 이름이 λ¦¬μ†ŒμŠ€λ₯Ό μœ„ν•΄ 선택할 수 μžˆλŠ” λ‹€ μ–‘ν•œ ν‘œν˜„μ˜ μƒλŒ€μ  ν’ˆμ§ˆμ— κ°€μ€‘μΉ˜λ₯Ό ν• λ‹Ήν•˜κΈ° μœ„ν•΄ μ„œλ²„ ꡬ성 λ‚΄μ—μ„œ 자주 μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ΄λ‹€.

κ°€μ€‘μΉ˜λŠ” 0 μ—μ„œ 1 μ‚¬μ΄μ˜ λ²”μœ„μ—μ„œ μ‹€μ œ 숫자둜 μ •κ·œν™”λ˜λ©°, μ—¬κΈ°μ„œ 0.001은 κ°€μž₯ μ„ ν˜Έλ˜μ§€ μ•Šκ³  1은 κ°€μž₯ μ„ ν˜Έλ˜λ©°, 0의 값은 β€œnot acceptable”을 μ˜λ―Έν•œλ‹€. β€œq” λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” 경우 κΈ°λ³Έ κ°€μ€‘μΉ˜λŠ” 1이닀.

  • q값을 보낸 μ‚¬λžŒμ€ μ†Œμˆ˜μ  이후 μ„Έ 자리 μ΄μƒμ˜ 숫자λ₯Ό μƒμ„±ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

5.3.2 Accept

β€œAccept” 헀더 ν•„λ“œλŠ” μ‚¬μš©μž μ—μ΄μ „νŠΈμ—μ„œ ν—ˆμš© κ°€λŠ₯ν•œ 응닡 λ―Έλ””μ–΄ νƒ€μž…μ„ μ§€μ •ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλ‹€. Accept 헀더 ν•„λ“œλŠ” 인라인 이미지 μš”μ²­μ˜ 경우처럼 μš”μ²­μ΄ νŠΉλ³„νžˆ μ›ν•˜λŠ” νƒ€μž…μ˜ μž‘μ€ μ§‘ν•©μœΌλ‘œ μ œν•œλ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•  수 μžˆλ‹€.

5.3.3 Accept-Charset

β€œAccept-Charset” 헀더 ν•„λ“œλŠ” μ‚¬μš©μž μ—μ΄μ „νŠΈκ°€ ν…μŠ€νŠΈ 응닡 λ‚΄μš©μ—μ„œ ν—ˆμš©λ˜λŠ” charset(μ΄ν•˜ 문자 μ§‘ν•©)을 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ 전솑할 수 μžˆλ‹€.

5.3.4 Accept-Encoding

μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” β€œAccept-Encoding” 헀더 ν•„λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‘λ‹΅μ—μ„œ ν—ˆμš©λ˜λŠ” content-coding 응닡(Section 3.1.2.1)λ₯Ό ν‘œμ‹œν•  수 μžˆλ‹€. Accept-Encoding ν•„λ“œμ˜ λ³„ν‘œ β€œ*” κΈ°ν˜ΈλŠ” 헀더 ν•„λ“œμ— λͺ…μ‹œμ μœΌλ‘œ λ‚˜μ—΄λ˜μ§€ μ•Šμ€ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  content-codingκ³Ό μΌμΉ˜ν•œλ‹€.

Accept-Encoding: compress, gzip Accept-Encoding: Accept-Encoding: * Accept-Encoding: compress;q=0.5, gzip;q=1.0 Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0

5.3.5 Accept-Language

μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” β€œAccept-Language” 헀더 ν•„λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‘λ‹΅μ—μ„œ μ„ ν˜Έν•˜λŠ” μžμ—°μ–΄ 집합을 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

  • μ‚¬μš©μžμ—κ²Œ μ΄λŸ¬ν•œ μ œμ–΄λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠλŠ” μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” Accept-Language 헀더 ν•„λ“œλ₯Ό λ³΄λ‚΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

5.4 Authentication Credentials

[RFC7235]μ—μ„œ μ •μ˜ν•œ 인증 자격 증λͺ…을 μ „λ‹¬ν•˜λŠ” 데 두 개의 헀더 ν•„λ“œκ°€ μ‚¬μš©λœλ‹€. μ‚¬μš©μž 인증을 μœ„ν•œ λ‹€μ–‘ν•œ μ‚¬μš©μž μ •μ˜ λ©”μ»€λ‹ˆμ¦˜μ€ [RFC6265]μ—μ„œ μ •μ˜ν•œ Cookie 헀더 ν•„λ“œλ₯Ό μ΄λŸ¬ν•œ λͺ©μ μœΌλ‘œ μ‚¬μš©ν•œλ‹€λŠ” 점에 μ°Έκ³ ν•œλ‹€.

5.5 Request Context

λ‹€μŒ μš”μ²­ 헀더 ν•„λ“œλŠ” μš”μ²­ 뒀에 μžˆλŠ” μ‚¬μš©μž, μ‚¬μš©μž μ—μ΄μ „νŠΈ 및 λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ μš”μ²­ μ»¨ν…μŠ€νŠΈμ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό μ œκ³΅ν•œλ‹€.

5.5.1 From

β€œFrom” 헀더 ν•„λ“œμ—λŠ” μš”μ²­λœ μ‚¬μš©μž μ—μ΄μ „νŠΈλ₯Ό μ œμ–΄ν•˜λŠ” μ‚¬μš©μžμ˜ 인터넷 μ „μž 메일 μ£Όμ†Œκ°€ ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

From: webmaster@example.org

5.5.2 Referer

5.5.3 User-Agent

β€œUser-Agent” 헀더 ν•„λ“œμ—λŠ” 보고된 μƒν˜Έμš΄μš©μ„± 문제의 λ²”μœ„λ₯Ό μ‹λ³„ν•˜κ³ , νŠΉμ • μ‚¬μš©μž μ—μ΄μ „νŠΈ μ œν•œμ„ ν”Όν•˜κΈ° μœ„ν•œ 응닡을 μ‘°μ •ν•˜κ±°λ‚˜ ν”Όν•˜κΈ° μœ„ν•΄ μ„œλ²„κ°€ 자주 μ‚¬μš©ν•˜λŠ” μš”μ²­μ˜ λ°œμƒ μ‚¬μš©μž μ—μ΄μ „νŠΈμ— λŒ€ν•œ 정보가 ν¬ν•¨λ˜μ–΄ 있으며 λΈŒλΌμš°μ € λ˜λŠ” 운영 μ²΄μ œμ‚¬μš©μ— λŒ€ν•œ 뢄석을 μœ„ν•΄ μ‚¬μš©λœλ‹€.

  • μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” νŠΉλ³„νžˆ κ΅¬μ„±λ˜μ§€ μ•Šμ€ ν•œ 각 μš”μ²­μ—μ„œ User-Agent ν•„λ“œλ₯Ό 전솑해야 ν•œλ‹€.(SHOULD)

  • λ°œμ‹ μžλŠ” μƒμ„±λœ product μ‹λ³„μžλ₯Ό product 식별에 ν•„μš”ν•œ κ²ƒμœΌλ‘œ μ œν•œν•΄μ•Ό ν•˜λ©°, λ°œμ‹ μžλŠ” product μ‹λ³„μž λ‚΄μ—μ„œ κ΄‘κ³ λ‚˜ 기타 λΉ„ν•„μˆ˜ 정보λ₯Ό μƒμ„±ν•΄μ„œλŠ” μ•ˆλœλ‹€.(MUST NOT)

Last updated

Was this helpful?