단일 HTTP 헤더의 여러 값을 요청 또는 응답에 추가하기위한 표준
값 목록을 HTTP 헤더로 추가하려는 경우이를 수행하는 표준 방법이 있습니까? RFC 822에서 쉽게 이해할 수있는 항목을 찾을 수 없습니다. 예를 들어 쉼표로 구분 된 값은 표준 값이거나 세미콜론으로 구분 된 값입니다. 표준이 전혀 있습니까?
예:
Key: value1;value2;value3
HTTP 사양 RFC 2616을 살펴보면 다음과 같습니다.
동일한 필드 이름을 가진 여러 메시지 헤더 필드는 해당 헤더 필드의 전체 필드 값이 쉼표로 구분 된 목록 [즉, # (값)]으로 정의 된 경우에만 메시지에 존재할 수 있습니다. 메시지의 의미를 변경하지 않고 여러 헤더 필드를 하나의 "필드 이름 : 필드 값"쌍으로 결합 할 수 있어야합니다 (MUST). 각 후속 필드 값을 첫 번째 필드에 추가하고 각각 쉼표로 구분합니다. 따라서 동일한 필드 이름을 가진 헤더 필드가 수신되는 순서는 결합 된 필드 값의 해석에 중요하므로 프록시는 메시지가 전달 될 때 이러한 필드 값의 순서를 변경해서는 안됩니다.
이것이 의미하는 바는 쉼표를 사용하여 값을 서로 추가 할 수있는 한 서로 다른 값이있는 응답에서 동일한 헤더를 여러 번 보낼 수 있다는 것입니다. 이것은 또한 쉼표로 연결하여 단일 헤더에 여러 값을 보낼 수 있음을 의미합니다.
따라서 귀하의 경우에는 다음과 같습니다.
Key: value1,value2,value3
꼭 @ marc-novakowski "문제"를 좁히세요 :)
일반적으로 (HTTP 사양에 따라) 쉼표 ','를 사용하여 각 값을 다른 값과 구분합니다.
하지만 간단한 경우를 살펴 보겠습니다.
Cookie-set: language=pl; expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com
Cookie-set: id=123 expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com; httponly
값이 쉼표로 구분 될 때 이러한 헤더를 어떻게 결합합니까?-쉼표가 나타날 수있는 경우 ???
그렇다면 "고객"의 책임은 전략 을 선택 하고 결정하는 것입니다. 예를 들어 drop, merg (어떻게 merg 인 경우)?
nsHttpHeaderArray의 Mozilla 구현을 살펴보십시오.
mozilla 는이 경우 줄 바꿈 구분 기호 '\ n' 을 사용 하도록 선택합니다 (특정 헤더 필드 이름의 경우).
이러한 상황에 직면했을 때 익숙한 계획을 제공하는 일반적인 기존 솔루션을 검색하는 것이 좋습니다.
그러나 동일한 필드 이름을 가진 모든 값이 필드 값 목록으로 결합되는 것은 아닙니다. 예를 들어, RFC 7230에서 우리는
참고 : 실제로 "Set-Cookie"헤더 필드 ([RFC6265])는 응답 메시지에 여러 번 나타나는 경우가 많으며 목록 구문을 사용하지 않으므로 동일한 이름을 가진 여러 헤더 필드에 대한 위의 요구 사항을 위반합니다. 단일 필드 값으로 결합 될 수 없기 때문에 수신자는 헤더 필드를 처리하는 동안 "Set-Cookie"를 특별한 경우로 처리해야합니다. (자세한 내용은 [Kri2001]의 부록 A.2.3을 참조하십시오.)
'program tip' 카테고리의 다른 글
다른 사람이 TFS의 파일을 잠근 경우 어떻게합니까? (0) | 2020.12.12 |
---|---|
Case vs If Else If : 어느 것이 더 효율적입니까? (0) | 2020.12.12 |
실행중인 가비지 수집기 유형 찾기 (0) | 2020.12.12 |
빌드 단계 진행률 표시 줄 (css 및 jquery) (0) | 2020.12.12 |
DataGridView 열에서 텍스트를 오른쪽 정렬하려면 어떻게해야합니까? (0) | 2020.12.12 |