your programing

HTTP 헤더는 대소 문자를 구분합니까?

lovepro 2020. 10. 2. 22:59
반응형

HTTP 헤더는 대소 문자를 구분합니까?


블로그 게시물에서 다음 PHP를 사용하여 응답의 콘텐츠 유형을 설정합니다.

header('content-type: application/json; charset=utf-8');

방금 해당 게시물에 content-type대문자로 표기해야 한다는 댓글을 받았습니다 Content-type. 이 올바른지? 모두 소문자로 작동하는 것 같고 HTTP 헤더가 대소 문자를 구분하지 않는다고 가정했습니다. 아니면 브라우저가 좋기 때문에 작동합니까?


헤더 이름은 대소 문자를 구분하지 않습니다.

에서 RFC 2616 - "하이퍼 텍스트 전송 프로토콜 - HTTP / 1.1" , 4.2 절, "메시지 헤더" :

각 헤더 필드는 이름과 콜론 ( ":"), 필드 값으로 구성됩니다. 필드 이름은 대소 문자 구분합니다.

RFC 7230 업데이트 는이 부분 에서 RFC 2616의 변경 사항을 나열하지 않습니다 .


HTTP 헤더 이름은 RFC 2616 에 따라 대소 문자를 구분하지 않습니다 .

4.2 :

각 헤더 필드는 이름과 콜론 ( ":"), 필드 값으로 구성됩니다. 필드 이름은 대소 문자를 구분하지 않습니다.

(필드 은 대소 문자를 구분하거나 구분하지 않을 수 있습니다.)

주요 브라우저가이를 준수한다고 신뢰한다면 모든 설정이 완료된 것입니다.


BTW는 대부분의 HTTP와 달리 메서드 (동사) 대소 문자를 구분합니다.

5.1.1 방법

Method 토큰은
Request-URI로 식별되는 리소스 에 대해 수행 할 방법을 나타냅니다 . 이 방법은 대소 문자를 구분합니다.

   Method         = "OPTIONS"                ; Section 9.2
                  | "GET"                    ; Section 9.3
                  | "HEAD"                   ; Section 9.4
                  | "POST"                   ; Section 9.5
                  | "PUT"                    ; Section 9.6
                  | "DELETE"                 ; Section 9.7
                  | "TRACE"                  ; Section 9.8
                  | "CONNECT"                ; Section 9.9
                  | extension-method
   extension-method = token

tldr; HTTP / 1.1 및 HTTP / 2 헤더는 모두 대소 문자를 구분하지 않습니다.

RFC 7230 (HTTP / 1.1) 에 따르면 :

각 헤더 필드는 대소 문자를 구분하지 않는 필드 이름과 콜론 ( ":"), 선택적 선행 공백, 필드 값 및 선택적 후행 공백으로 구성됩니다.

https://tools.ietf.org/html/rfc7230#section-3.2

또한 RFC 7540 (HTTP / 2) :

HTTP / 1.x에서와 마찬가지로 헤더 필드 이름은
대소 문자를 구분하지 않는 방식으로 비교되는 ASCII 문자의 문자열입니다 .

https://tools.ietf.org/html/rfc7540#section-8.1.2


header('Content-type: image/png') 이미지 스트림이 텍스트로 표시된 것처럼 IE11을 제공하는 PHP 5.5에서 작동하지 않았습니다.

header('Content-Type: image/png') 이미지에서 이미지로 나타난 것처럼 작동했습니다.

유일한 차이점은 대문자 'T'입니다.


HTTP에 대한 RFC (위에 언급 된대로)는 헤더가 대소 문자를 구분하지 않는다고 지시하지만 특정 브라우저 (IE, IE)에서는 각 단어를 대문자로 사용하는 것이 가장 좋은 경향이 있음을 알 수 있습니다.

Location: http://stackoverflow.com

Content-Type: text/plain

vs

location: http://stackoverflow.com

content-type: text/plain

This isn't "HTTP" standard, but just another one of the browser quirks, we as developers, have to think about.


They are not case sensitive. In fact NodeJS web server explicitly converts them to lower-case, before making them available in the request object.

It's important to note here that all headers are represented in lower-case only, regardless of how the client actually sent them. This simplifies the task of parsing headers for whatever purpose.

참고URL : https://stackoverflow.com/questions/5258977/are-http-headers-case-sensitive

반응형