블로그 게시물에서 다음 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의 변경 사항을 나열하지 않습니다 .
답변
RFC 2616 에 따르면 HTTP 헤더 이름은 대소 문자를 구분하지 않습니다 .
4.2 :
각 헤더 필드는 이름과 콜론 ( “:”) 및 필드 값으로 구성됩니다. 필드 이름은 대소 문자를 구분하지 않습니다.
필드 값 은 대소 문자를 구분하거나 구분하지 않을 수 있습니다.
주요 브라우저가이를 준수한다고 믿으면 모든 준비가 된 것입니다.
BTW는 대부분의 HTTP와 달리 메소드 (동사) 는 대소 문자를 구분합니다.
5.1.1 방법
메소드 토큰은
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 문자의 문자열입니다 .
답변
header('Content-type: image/png')
이미지 스트림에서 텍스트로 표시된 것처럼 IE11을 제공하는 PHP 5.5에서는 작동하지 않았습니다.
header('Content-Type: image/png')
이미지가 이미지로 나타난 것처럼 작동
유일한 차이는 수도 ‘T’입니다.
답변
대소 문자를 구분하지 않습니다. 실제로 NodeJS 웹 서버 는 요청 오브젝트에서 사용 가능하게하기 전에 이를 명시 적 으로 소문자 로 변환 합니다.
클라이언트가 실제로 보낸 방법에 관계없이 모든 헤더는 소문자로만 표시된다는 점에 유의해야합니다. 이것은 어떤 목적 으로든 헤더를 파싱하는 작업을 단순화합니다.
답변
HTTP에 대한 RFC (위에서 인용)는 헤더가 대소 문자를 구분하지 않음을 나타내지 만 특정 브라우저 (IE를보고 있습니다)를 사용하면 각 단어를 대문자로 표시하는 것이 가장 좋습니다.
Location: http://stackoverflow.com
Content-Type: text/plain
vs
location: http://stackoverflow.com
content-type: text/plain
이것은 “HTTP”표준은 아니지만 개발자로서 우리가 생각해야 할 브라우저 단점 중 하나 일뿐입니다.
답변
공식적으로 헤더는 대소 문자를 구분하지 않지만 모든 단어의 첫 글자를 대문자로 표기하는 것이 일반적입니다.
그러나 일반적인 관행이기 때문에 IE와 같은 특정 프로그램은 헤더가 대문자로 가정합니다.
문서가 대소 문자를 구분하지 않는다고 말하지만 나쁜 프로그래머는 기본적으로 문서를 변경했습니다.
