실용적인 HTTP 헤더 길이 제한이 있습니까?
setRequestHeader API를 사용하여 XmlHttpRequest 개체에 컨텍스트 정보를 추가하는 웹 응용 프로그램이 있습니다. 사용자 지정 헤더 이름 (예 : X-Foo)과 JSON 구조화 된 값을 사용하고 있습니다. 요청에 대한 메타 정보이므로 URL QueryString 또는 POST 본문의 일부가 아닙니다.
헤더 값에 실제 크기 제한이 있습니까? 내 JSON이 잘 리면 구문 분석 할 수 없게됩니다. Apache 2, Tomcat 6 및 IIS 7의 제한에 가장 관심이 있습니다. http 헤더 길이 제한에 대한 Google 검색을 수행 했지만 많은 결과가 날짜가 지난 것 같습니다. 사용자 에이전트 문자열이 얼마나 커질 수 있습니까?에 관련 주석이 있습니다. 하지만 내가 원하는만큼 구체적이지는 않습니다.
편집 : 나는 방금이 비슷한 질문을 만났습니다- 최대 http 헤더 값?
예,하지만 제한은 구성 가능하며 플랫폼에 따라 다릅니다. 예를 들어 Tomcat 의 기본 제한은 8K입니다. IIS 7에 대해서는 확실하지 않은 IIS 6의 제한은 16K라고 생각합니다. 여러 웹 사이트에 통합 Windows 인증을 사용할 때이 문제가 발생했습니다. 헤더로 인코딩 할 때 내 보안 토큰이 너무 큽니다. 다행히도 구성 할 수 있습니다. IIS의 레지스트리 설정은 http://support.microsoft.com/kb/820129 에서 찾을 수 있습니다 . 변경할 주요 설정은 MaxFieldLength (헤더 크기 당) 및 MaxRequestBytes (총 요청 크기)입니다.
각 웹 서버 소프트웨어에는 몇 가지 제한 사항이 있지만 HTTP 요청 라인 과 헤더 필드에 대한 제한이 있는지 또는 각 헤더 필드에 대한 제한이 있는지에 차이가 있습니다.
요약은 다음과 같습니다.
결론 : 위의 모든 웹 서버에서 수락하려면 요청의 요청 라인과 헤더 필드가 8190 바이트를 초과하지 않아야 합니다. 이것은 또한 각 헤더 필드에 대한 제한입니다 (효과적으로 더 적음).
Apache의 경우 다음 지시문을 나열하는 Apache 보안에 대한 서버 제한 문서를 찾았습니다 .
# allow up to 100 headers in a request
LimitRequestFields 100
# each header may be up to 8190 bytes long
LimitRequestFieldsize 8190
Nginx의 경우 HttpCoreModule 의 large_client_header_buffers 지시문이이를 제어합니다.
요청의 가장 긴 헤더 행도 하나의 버퍼 크기보다 크지 않아야합니다. 그렇지 않으면 클라이언트에 "Bad request"(400) 오류가 표시됩니다.
기본적으로 하나의 버퍼 크기는 4K 또는 8K 플랫폼에 따라 페이지 크기와 동일합니다.
서버를 구성 할 수 있지만 실제로 방화벽,로드 밸런서 및 프록시를 통해 전체 방식을 구성 할 수있을 것 같지 않습니다. 헤더 크기를 작게 유지하면 문제가 발생하지 않습니다.
Flash Media Server 4.5에는 매우 짧은 기본 헤더 길이 제한이있어 특히 쿠키로드가 보통 인 상황에서 서버가 응답하지 않을 수 있습니다.
참조 : Flash Media Server 4.5 구성 및 관리 : 서버 구성 Apache HTTP 서버 구성 : 최대 HTTP 헤더 행 길이 지정
Flash Media Server Adaptor.xml 파일에서
MaxHeaderLineLength요소는 서버가 처리 할 수있는 HTTP 헤더의 크기를 결정합니다. 의 기본값MaxHeaderLineLength은 1024 바이트입니다. 일부 브라우저는 1024 바이트보다 큰 헤더를 보냅니다. 이 시나리오에서 Apache는 빈 응답을 다시 보냅니다. 이 문제를 해결하려면MaxHeaderLineLength8192로 구성하십시오 .참고 : 기본적으로 Apache HTTP 헤더 크기 제한은 8KB (8190 바이트 + 캐리지 리턴)입니다.
Flash Media Server의 헤더 크기 제한이 다른 사람에게 물릴 경우를 대비하여 여기에 넣으십시오.
참고 URL : https://stackoverflow.com/questions/1097651/is-there-a-practical-http-header-length-limit
'Nice programing' 카테고리의 다른 글
| 프랙탈을 프로그래밍하는 방법? (0) | 2020.11.01 |
|---|---|
| ScrollViewer가 StackPanel 내에서 작동하도록하려면 어떻게해야합니까? (0) | 2020.11.01 |
| @ Html.DisplayFor-DateFormat ( "mm / dd / yyyy") (0) | 2020.10.31 |
| Android Studio 드로어 블 폴더 (0) | 2020.10.31 |
| Java 중요 섹션에서 무엇을 동기화해야합니까? (0) | 2020.10.31 |