HTTP GET 요청 의 최대 길이는 얼마입니까?
서버가이 길이를 초과하는 GET 요청을 수신하면 리턴 할 수 있거나 응답해야하는 응답 오류가 있습니까?
이것은 브라우저 한계를 보는 것도 흥미롭지 만 웹 서비스 API와 관련이 있습니다.
HTTP GET 요청 의 최대 길이는 얼마입니까?
서버가이 길이를 초과하는 GET 요청을 수신하면 리턴 할 수 있거나 응답해야하는 응답 오류가 있습니까?
이것은 브라우저 한계를 보는 것도 흥미롭지 만 웹 서비스 API와 관련이 있습니다.
답변:
제한은 사용 된 서버와 클라이언트 (해당되는 경우 서버 또는 클라이언트가 사용중인 프록시)에 따라 다릅니다.
대부분의 웹 서버는 8192 바이트 (8KB)로 제한되며 일반적으로 서버 구성의 어느 곳에서나 구성 할 수 있습니다. 클라이언트 측면에서 HTTP 1.1 사양은 이것에 대해서도 경고합니다. 다음은 3.2.1 장의 추출입니다 .
참고 : 일부 이전 클라이언트 또는 프록시 구현은 이러한 길이를 제대로 지원하지 않을 수 있으므로 서버는 URI 길이가 255 바이트를 초과하는 것에주의해야합니다.
Internet Explorer 및 Safari의 제한은 약 2KB, Opera에서는 약 4KB, Firefox에서는 약 8KB입니다. 따라서 우리는 8KB가 가능한 최대 길이이고 2KB가 서버 측에 의존하기에 더 적합한 길이이고 255 바이트가 전체 URL이 들어오는 것으로 가정하는 가장 안전한 길이라고 가정 할 수 있습니다.
브라우저 나 서버에서 제한이 초과되면 대부분 경고없이 제한 밖에서 문자를 자릅니다. 그러나 일부 서버는 HTTP 414 오류를 보낼 수 있습니다 . 큰 데이터를 보내야하는 경우 GET 대신 POST를 사용하는 것이 좋습니다. 한계는 훨씬 높지만 클라이언트보다 사용 된 서버에 따라 다릅니다. 일반적으로 평균 웹 서버에서 최대 약 2GB가 허용됩니다. 서버 설정 어딘가에서 구성 할 수도 있습니다. 평균 서버는 POST 제한이 초과되면 일반적으로 HTTP 500 오류로 서버 별 오류 / 예외를 표시합니다.
여기에 두 가지 별도의 질문이 있습니다.
HTTP GET 요청의 최대 길이는 얼마입니까?
이미 언급했듯이 HTTP 자체는 요청 길이에 대한 하드 코딩 된 제한을 부과하지 않습니다. 그러나 브라우저에는 2KB-8KB 범위가 있습니다 ( 오래된 브라우저를 계산하는 경우 255 바이트 ).
GET 요청을 수신 한 서버가이 길이를 초과하면 서버가 반환 / 반환해야한다는 응답 오류가 있습니까?
아무도 대답하지 않은 사람입니다.
HTTP 1.1은 414 Request-URI Too Long
서버 정의 한계에 도달 한 경우의 상태 코드 를 정의합니다. RFC 2616 에 대한 자세한 내용을 볼 수 있습니다 .
클라이언트 정의 제한의 경우 서버가 요청을 전혀 수신하지 않기 때문에 서버가 무언가를 반환하는 의미가 없습니다.
브라우저 제한은 다음과 같습니다.
Browser Address bar document.location
or anchor tag
---------------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
Internet Explorer 11 2047 5120
Edge 16 2047 10240
더 원해? Stack Overflow 에서이 질문을 참조하십시오 .
비슷한 질문이 있습니다 : GET 요청의 길이에 제한이 있습니까?
한도에 도달하고 공유 호스팅 계정에 도달했지만 브라우저가 서버에 도착하기 전에 빈 페이지를 반환했습니다.
예. GET 요청에는 제한이 없습니다.
Chrome 브라우저와 curl 명령을 모두 사용하여 쿼리 문자열의 일부로 최대 4000자를 보낼 수 있습니다.
예상 200 OK 응답을 반환 한 Tomcat 8.x 서버를 사용하고 있습니다.
다음은 Google Chrome HTTP 요청의 스크린 샷입니다 (보안상의 이유로 시도한 엔드 포인트 숨기기).
응답