Nice programing

실용적인 HTTP 헤더 길이 제한이 있습니까?

nicepro 2020. 11. 1. 18:38
반응형

실용적인 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 요청 라인 과 헤더 필드에 대한 제한이 있는지 또는 각 헤더 필드에 대한 제한이 있는지에 차이가 있습니다.

요약은 다음과 같습니다.

  • Apache 1.3 , 2.0 , 2.2 , 2.3 : 8190 바이트 (각 헤더 필드에 대해)
  • IIS :
    • 4.0 : 2097152 바이트 (요청 라인 및 헤더 필드 용)
    • 5.0 : 131072 바이트 , 16384 바이트 ( Windows 2000 서비스 팩 4 포함) (요청 줄과 헤더 필드 용)
    • 6.0 : 16384 바이트 (헤더 필드 당)
  • 수코양이:
    • 5.5.x / 6.0.x : 49152 바이트 (요청 라인 및 헤더 필드 용)
    • 7.0.x : 8190 바이트 (요청 라인 및 헤더 필드 용)

결론 : 위의 모든 웹 서버에서 수락하려면 요청의 요청 라인과 헤더 필드가 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의 경우 HttpCoreModulelarge_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

반응형