문제

문맥 정보를 추가하는 웹 응용 프로그램이 있습니다. xmlhttprequest The를 사용하는 객체 setRequestHeader API. 나는 커스텀 헤더 이름 (예 : x-foo)을 사용하고 있습니다. JSON 구조적 가치. 요청에 대한 메타 정보이기 때문에 URL QueryString 또는 Post Body의 일부가 아닙니다.

헤더 값에 실용적인 크기 제한이 있습니까? 내 json이 잘린 경우, 간주 할 수 없습니다. Apache 2, Tomcat 6 및 IIS의 한도에 가장 관심이 있습니다. Google 검색을했습니다. HTTP 헤더 길이 제한, 그러나 많은 결과가 날짜가 된 것 같습니다. 몇 가지 관련 의견이 있습니다 사용자 에이전트 문자열은 얼마나 큰가요? 그러나 내가 원하는만큼 구체적이지는 않습니다.

편집하다:방금이 비슷한 질문을 가로 질러 달렸습니다. HTTP 헤더 값의 최대?

도움이 되었습니까?

해결책

예,하지만 한계는 구성 가능하며 플랫폼에 따라 다릅니다. 예를 들어, 수코양이 기본 제한은 8K입니다. IIS 7에 대해 확실하지 않은 IIS 6의 한계는 16K입니다. 여러 웹 사이트에 통합 된 Windows 인증을 사용할 때이 문제를 해결했습니다. 헤더에 인코딩 할 때 내 보안 토큰이 너무 커 렸습니다. 다행히도 구성 가능합니다. IIS의 레지스트리 설정은 다음에서 찾을 수 있습니다 http://support.microsoft.com/kb/820129. 변경해야 할 주요 설정은 MaxFieldLength (헤더 크기 별) 및 MaxRequestBytes (총 요청 크기)라고 생각합니다.

다른 팁

각 웹 서버 소프트웨어에는 몇 가지 제한 사항이 있지만 HTTP 요청 라인 헤더 필드 또는 각 헤더 필드에 대한 추가.

요약은 다음과 같습니다.

  • 아파치 1.3, 2.0, 2.2, 2.3: 8190 바이트 (각 헤더 필드에 대해)
  • IIS :
    • 4.0: 2097152 바이트 (요청 라인 플러스 헤더 필드)
    • 5.0: 131072 바이트, 16384 바이트 Windows 2000 Service Pack 4 (요청 라인 + 헤더 필드)
    • 6.0: 16384 바이트 (각 헤더 필드에 대해)
  • 수코양이:
    • 5.5.x/6.0.x: 49152 바이트 (요청 라인 플러스 헤더 필드)
    • 7.0.x: 8190 바이트 (요청 라인 플러스 헤더 필드)

결론적으로 : 위의 모든 웹 서버가 수락하려면 요청의 요청 라인 + 헤더 필드는 8190 바이트를 초과하지 않아야합니다.. 이것은 또한 각 헤더 필드의 한계입니다 (효과적으로 훨씬 적게).

아파치에게는 이것을 찾았습니다 Apache Security의 서버 제한 이러한 지침을 나열하는 기사 :

  # allow up to 100 headers in a request
  LimitRequestFields 100
  # each header may be up to 8190 bytes long
  LimitRequestFieldsize 8190

nginx의 경우 large_client_header_buffers httpcoremodule의 지침은 이것을 제어합니다.

요청의 가장 긴 헤더 라인은 또한 하나의 버퍼의 크기 이상이어야하며, 그렇지 않으면 클라이언트는 "잘못된 요청"(400) 오류를 얻습니다.

기본적으로 하나의 버퍼의 크기는 플랫폼에 따라 페이지 크기와 같습니다.

서버를 구성 할 수는 있지만 방화벽,로드 밸런서 및 프록시를 통해 전체 방식을 구성 할 수는 없습니다. 헤더 크기를 작게 유지하면 문제가 멀어집니다.

Flash Media Server 4.5에는 매우 짧은 기본 헤더 길이 제한이있어 서버가 단순히 응답하지 않을 수 있습니다. 특히 쿠키로드가 적당한 상황에서.

보다: Flash Media Server 4.5 구성 및 관리 : 서버 구성 Apache HTTP 서버 구성 : 최대 HTTP 헤더 라인 길이를 지정합니다.

플래시 미디어 서버 adaptor.xml 파일에서 MaxHeaderLineLength요소는 서버가 처리 할 수있는 HTTP 헤더의 크기를 결정합니다. 기본값 MaxHeaderLineLength 1024 바이트입니다. 일부 브라우저는 1024 바이트보다 큰 헤더를 보냅니다. 이 시나리오에서 Apache는 빈 응답을 다시 보냅니다. 이 문제를 해결하려면 구성하십시오 MaxHeaderLineLength 8192까지.

참고 : 기본적으로 Apache HTTP 헤더 크기 제한은 8kb (8190 바이트와 캐리지 리턴)입니다.

Flash Media Server의 헤더 크기 제한이 다른 사람을 물린 경우에 이것을 여기에 두십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top