developer tip

HTTP 응답의 헤더 순서가 중요합니까?

copycodes 2020. 12. 5. 10:01
반응형

HTTP 응답의 헤더 순서가 중요합니까?


헤더의 순서가

A: 1
B: 2

vs

B:2
A:1

헤더 목록을 저장하기 위해 사전을 사용할 수 있는지 또는 일종의 목록이나 정렬 된 사전이 필요한지 알아 내려고합니다.


아니요, 이름이 다른 헤더에는 문제가되지 않습니다. RFC 2616 , 섹션 4.2를 참조하십시오 .

필드 이름이 다른 헤더 필드가 수신되는 순서는 중요하지 않습니다. 그러나 먼저 일반 헤더 필드를 보낸 다음 요청 헤더 또는 응답 헤더 필드를 보내고 엔터티 헤더 필드로 끝나는 것이 "좋은 방법"입니다.

그러나 동일한 이름을 가진 여러 헤더의 경우 중요합니다.

동일한 필드 이름을 가진 다중 메시지 헤더 필드는 해당 헤더 필드의 전체 필드 값이 쉼표로 구분 된 목록 [즉, # (값)]으로 정의 된 경우에만 메시지에 존재할 수 있습니다. 메시지의 의미를 변경하지 않고 여러 헤더 필드를 하나의 "필드 이름 : 필드 값"쌍으로 결합 할 수 있어야합니다 (MUST). 각 후속 필드 값을 첫 번째 필드에 추가하고 각각 쉼표로 구분합니다. 따라서 동일한 필드 이름을 가진 헤더 필드가 수신되는 순서는 결합 된 필드 값의 해석에 중요하므로 프록시는 메시지가 전달 될 때 이러한 필드 값의 순서를 변경하지 않아야합니다.


헤더의 순서는 중요하지 않습니다. 순서가 중요한 HTTP 표준의 "약한"구현이있을 수 있지만 일반적으로는 그렇지 않습니다.

다음은 HTTP 헤더를 설명하는 링크입니다.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2


HTTP 헤더는 서로 독립적이며 사전을 사용하여 순서에 대한 걱정없이 저장할 수 있습니다.


set-cookie동일한 쿠키에 대해 여러 번 지정할 때도 문제가 될 수 있습니다 .

"Set-Cookie: COOKIE1=VALUE1; ...
"Set-Cookie: COOKIE1=VALUE2; ...

이 경우은 COOKIE1로 설정되고 VALUE2순서가 변경된 경우 :

"Set-Cookie: COOKIE1=VALUE2; ...
"Set-Cookie: COOKIE1=VALUE1; ...

COOKIE1 설정됩니다 VALUE1


RFC 7230, 섹션 3.2.2 : Field Order는 이 질문을 구체적으로 다룹니다. 여기에 인용문은 사양의 해당 섹션에서 가져온 것입니다.

필드 이름다른 헤더 필드 가 수신 되는 순서는 중요하지 않습니다 .

성능을위한 모범 사례에 대한 메모와 함께 자격을 부여합니다.

그러나 요청시 호스트 및 응답시 날짜와 같이 제어 데이터가 포함 된 헤더 필드를 먼저 전송하여 구현시 메시지를 가능한 한 빨리 처리하지 않을시기를 결정할 수 있도록하는 것이 좋습니다.

어떤 경우에는 메시지가 동일한 이름을 가진 여러 헤더 필드를 포함 할 수 있습니다. 이 경우 순서가 중요합니다.

수신자는 메시지의 의미를 변경하지 않고 동일한 필드 이름을 가진 여러 헤더 필드를 하나의 "field-name : field-value"쌍으로 결합 할 수 있습니다. 각 후속 필드 값을 결합 된 필드 값에 순서대로 추가하여 반점. 따라서 필드 이름동일한 헤더 필드 가 수신 되는 순서 는 결합 된 필드 값의 해석에 중요 합니다.

참고 URL : https://stackoverflow.com/questions/750330/does-the-order-of-headers-in-an-http-response-ever-matter

반응형