브라우저가 gzip 요청을 보낼 수없는 이유는 무엇입니까?
웹 서버가 gzip 응답을 보낼 수 있다면 브라우저가 gzip 요청을 보낼 수없는 이유는 무엇입니까?
클라이언트와 서버는 통신 방법에 동의해야합니다. 이 중 일부는 통신을 압축 할 수 있는지 여부입니다. HTTP는 요청 / 응답 모델로 설계되었으며 원래 생성은 항상 작은 요청과 잠재적으로 큰 응답을 갖도록 거의 확실하게 구상되었습니다. HTTP를 구현하는 데 압축이 필요 하지 않으며이를 지원하지 않는 서버와 클라이언트가 모두 있습니다.
HTTP 압축은 압축을 지원할 수 있다고 클라이언트에 의해 구현되며 서버가 요청에서 이것을보고 압축을 지원하면 응답을 압축 할 수 있습니다. 요청을 압축하려면 클라이언트는 요청이 압축되도록 실제로 협상 한 "사전 요청"을 가져야하거나 모든 요청에 대해 지원되는 인코딩으로 압축을 요구해야합니다.
* UPDATE Feb '17 * 8 년이 지났지 만 @ Phil_1984_가 지적했듯이 세 번째 가능한 솔루션은 클라이언트와 서버가 압축 지원을 협상 한 다음 후속 요청에 사용하는 것입니다. 실제로 HSTS와 같은 것들은 서버가 TLS 만 말하고 암호화되지 않은 링크를 무시할 것으로 예상하는 클라이언트 캐싱과 함께 이러한 방식으로 작동합니다. HTTP는 명시 적으로 상태 비 저장으로 설계되었지만 지금은 그 이상으로 이동했습니다.
클라이언트는 서버가 gzip으로 압축 된 요청을 이해할 수 있다는 것을 미리 알 수 없지만 서버는 클라이언트가이를 수락 할 것임을 알 수 있습니다.
그것은 서버가 그것을 받아 들일 것이라는 것을 보장 할 수 있다면 가능합니다. 이것은 OPTIONS 요청 사용을 의미 할 수 있습니다.
웹 브라우저가 할 수있는 일 (예 : 파이프 라이닝)은 할 수 없지만 할 수있는 일은 많습니다. 웹 브라우저 개발자는 변경의 호환성 의미를 고려합니다.
이기종 환경에는 다양한 웹 서버와 구성이 있습니다. 클라이언트의 작업 방식을 변경하면 일부가 손상 될 수 있습니다.
아마도 서버의 1 %만이 gzip으로 압축 된 요청을 수락 할 수 있지만 일부는 그렇게한다고 광고하지만 올바르게 수락 할 수 없으므로 사용자는 해당 사이트에 파일을 업로드하는 것이 거부됩니다.
역사적으로 많은 깨진 클라이언트 / 서버 구현이있었습니다. 오랫동안 주요 웹 브라우저에서 gzip으로 압축 된 응답이 깨졌습니다 (고맙게도 지금은 대부분 사라졌습니다).
따라서 이러한 옵션이 자동으로 꺼진 사용자 에이전트 또는 서버 (또는 도메인 이름)의 블랙리스트가 생기는 것은 끔찍합니다.
서버가 그것을 받아 들일 수 있다는 것을 모르기 때문입니다. HTTP 트랜잭션에는 클라이언트가 보낸 단일 요청과 응답이 있습니다. 클라이언트가 보내는 것 중 하나는 지원할 수있는 인코딩 / 압축입니다. 그런 다음 서버는 응답 압축 방법을 결정할 수 있습니다. 클라이언트는이 사치를 가지고 있지 않습니다.
웹 애플리케이션을 작성하는 경우 클라이언트로 전송되는 내용과 클라이언트에서 다시 전송되는 내용을 제어 할 수 있다고 가정합니다.
서버로 전송되는 포스트 데이터를 압축하는 javascript로 gzip 구현을 작성하는 것은 쉽습니다. 서버는 클라이언트 데이터가 압축되어 전송된다는 것을 알고있는 필터 (j2ee 용어)를 가질 수 있습니다.이 필터는 데이터를 압축 해제 한 다음 데이터를 정상적으로 읽는 서블릿 (또는 Struts의 작업 클래스)에 전달합니다 (예 : request.getParameter (). ...).
이것은 당신이 통제한다면 완벽하게 논리적이고 할 수있는 것처럼 보입니다. 다른 게시물에서 언급했듯이이 작업을 자동으로 수행하기 위해 브라우저에 의존 할 수는 없지만 웹 페이지를 작성하고 있기 때문에 브라우저가 원하는 압축을 수행하도록 할 수 있습니다 (약간의 작업으로).
앤디.
HTTP는 다음과 같이 설계되었습니다.
- 클라이언트는 요청을 일반 텍스트로 말합니다 (압축 된 답변을 이해할 수있는 경우 포함).
- 적절한 인코딩 (압축 여부)으로 서버 응답
그러나이 디자인에서 클라이언트는 서버가 미리 이해하는지 알지 못하기 때문에 압축 된 요청을 보낼 수 없습니다.
참고 URL : https://stackoverflow.com/questions/424917/why-cant-browser-send-gzip-request
'Program Tip' 카테고리의 다른 글
XML 네임 스페이스는 무엇입니까? (0) | 2020.11.08 |
---|---|
StackOverflowException을 방지 및 / 또는 처리하려면 어떻게해야합니까? (0) | 2020.11.08 |
CDT 위에 Eclipse JDT 설치 (0) | 2020.11.08 |
동일한 컴퓨터에 여러 Python 버전이 있습니까? (0) | 2020.11.08 |
정수 합산 파랑, 짧은 + = 짧은 문제 (0) | 2020.11.08 |