HTTP GET 및 POST 강점과 약점과 오류를 요청

(가. 1) 안전 (서버에 저장된 로그 캐시되지 않습니다 URL의 일부, 그리고 로그 브라우저) 게시물입니다
이상 (2) 데이터 전송 후 (이 URL 길이 제한을받을)
(3) 포스트 (ASCII 문자를 보내에만 얻을) 더 많은 데이터 유형을 전송할 수
후보다 느린 얻을. (4)
, (Taobao의를 (. 5) 및, 게시물을 수정하는 등의 필터링 작업을 정렬 및 대한 일반 검색을 얻기 위해 데이터를 쓸 Alipay의, 목적이 자원을 얻는 것입니다) 검색 쿼리를 제출받을 데이터를 읽고

 

포스트보다 먼저, 왜 더 빨리 얻을
1.post 요구가 더 요청 헤더 포함
POST 데이터가 요청의 본문에 포함시킬 필요로, 그것은 (예 : 콘텐츠 형식) 몇 가지 더 헤더 필드 데이터 설명 섹션이 될 것이다,하는 사실, 그것은 최소한의 것입니다.

2. 가장 중요한 일이 실제로 서버에 대한 것이다 첫 번째 요청 확인 머리를 수신하기 전에 데이터를 게시하고 실제로 데이터를 전송
처리 후 요청을 :
(1) 브라우저는 TCP 연결 (먼저 악수를) 요청
(2 ) TCP 연결 서버 (제 악수)에 대해 약속 된
패킷이 됨),이 경우 최초의 HTTP 데이터 전송을 위해, 상대적으로 작은 (3) 브라우저를 확인하고, POST 요청 헤더 (제 악수를 전송
( 4) 서버 (100)는 계속해서 응답을 반환
브라우저가 데이터 송신 (5)
서버에게 200 OK 응답을 반환 (6)
: GET 요청의 처리
(1), 브라우저가 연결 TCP (제 악수) 요청
(2)의 TCP 서버 약속에 접속을 ( 두 번째 핸드 쉐이크)
(3) 브라우저 확인하고 GET 요청 헤더와 데이터 (세 번째 핸드 셰이크를 보내,이 메시지가 상대적으로 작은, 그것은)이 시점에서 처음 HTTP 전송 데이터를 것
(4) 서버가 200을 반환 확인 응답은
시각적으로 내가 소문, 인터넷 사용자가 테스트 한 것을이의 2/3을 얻을 전체 소비 포스트에 관하여이다,라고하는 것입니다.

3.get 데이터 캐시되며, 이후이 없을 것
, (HTML 페이지, 이미지 등) 방법 정적 데이터를 얻을 사용 Ajax 요청을 사용하여, 간단한 테스트를하는 것이 가능하면, 데이터 전송이 두 번째 이후 회 같으면 포스트 시간마다 10ms의 이하 (크롬 테스트)에 거의 모든 시간을 소비하는 소비됩니다. 요청이 정적 자원 인 경우 테스트, 크롬 및 파이어 폭스가 감지 취득 후 데이터가 캐시되지 않은 경우는, 캐시합니다,하지만 IE는 물론, 아무도 그것을 얻기 위해 정적 데이터 포스트를 사용해서는 안, 최대 캐시합니다, 어쨌든, 나는 보지 못했다.

4.post이 파이프 라인 될 수없는 전송
세션 후에는 각 연결하면, TCP 연결 HTTP (대부분 TCP하지만, 다른 보안 프로토콜이 가능)를 설정해야하고 의사 소통을 : HTTP 권위있는 가이드는이 말을했다 HTTP 세션 번만, 너무 연결 과정의 비율이! 그래서 영구 연결이있다 : 연결 유지 HTTP에 연결 헤더 값을 추가 / 1.0 +는 값이 HTTP / 1.1에서 헤더 부분 영구 연결에 추가됩니다 물론,라는 두에서뿐만 아니라 차이, HTTP / 1.1 닫기 또는 영구 연결에서 연결에 추가 폐쇄되지 않으며,하지 않는 한 영구 연결은 기본이다 HTTP / 1.0 + 반면에, 디스플레이는 연결 유지 헤더 관련, 그렇지 않으면 패킷 수신을 추가하지 않는 한 연결이 끊어졌습니다.
영구 연결, 실시 연통 관로가 HTTP / 1.1 정도로 나타났다 속도 최적화라고하는 제 1 요청을 송신 한 후, 상기 출력 큐에 모든 서버에 요청을 보낼 필요성 서버 응답이 수신 될 때까지 기다리지 않는다, 두 번째 요청은 즉시 발송하지만,이 방법은 문제가있다 : 파이프 연결 (10)가있는 경우 불안, 구를 보낸 후, 갑자기 서버가 당신에게 말할 수있는, 연결이 닫혀, 클라이언트가 요청의 첫 9 개월에서 응답을받은 경우에도이 시간이 비어있는 9 가지의 내용을 요청합니다, 그것은 쓸데없는 여행이 ......이 시점에서 필요로하는 클라이언트 요청을 재전송하는 말을하는 것입니다 (9) . 이 괜찮습니다 (예를 들면, 같은 결과마다 문제가되지 않습니다 몇 번 이상을 보낼 수) (몇 번을 보내보다 더 많은 고통을 것 같은 지불 한 경우와 같이) 그 비 멱등 요청 게시물 인 경우, 요청을 멱등하기 확실히 작동하지.
따라서, 상기 도관의 방법으로 후 요청은 통신 할 수있다! 대부분의 경우, POST 요청이 프로세스가 완전히 같은 시간에 최적화되지 않은 연결을 다시 설정해야합니까? 그래서, 때 보안 요구 사항이있는 경우, 다음 포스트는 더 좋을 것이다, 사용자 경험이 더 좋을 것이다, 그래서 물론, POST 요청을 사용하지 않는 통신에 대한 요청을받을 수 있습니다. 브라우저 측을 달성 연구의 파이프 라인 수송 요구, (오페라 제외) 기본 대부분의 브라우저의 경우처럼 보이는 것은 아닙니다 파이프 라인 전송, 수동 개방하지 않는 한!
두가, 오해의 최대 길이를 전달하는 매개 변수를 얻을
1. 요약
길이 제한을 지정하고 게시물을하지 않는다 (1) http 프로토콜을
(2)의 최대 길이가 브라우저를받을 예정이며, 웹 서버가 URL의 길이를 제한
(3) 브라우저와 웹 서버가 서로 다른 최대 길이를 제한하는 것은 동일하지 않다
(4) 크롬 지원하는 경우 IE, 2083byte의 최대 길이를 지원하는 최대 길이 8182byte

2. 오해
(1)는 제 1 길이 제한도 얻을 수 있고, 그것은 전체 URL의 길이보다는 파라미터 값의 데이터 길이를 제한하고, 소정의 수의 HTTP 프로토콜 요청 후 길이 제한은 / 결코
(2)는 소위 요청 길이 제한 브라우저와 웹 서버가 결정되고 다양한 브라우저와 웹 서버에 의해 설정된 동일한 설정되지 않으며, 각각의 소정의 브라우저 제조업체에 따라 또는 웹 서버의 처리 능력에 따라 설정 될 수있다. 2K IE와 사파리 브라우저의 제한, 오페라 제한 4K, 파이어 폭스 제한 8K (아주 오래된 버전 256 바이트), 최대 길이를 초과하는 경우, 직접 서버의 대부분을 잘라, 일부 서버는 414 오류가보고됩니다.

3. 각각의 브라우저와 웹 서버 요약의 최대 길이
브라우저
IE (1) : 길이 제한을 URL로 IE 브라우저 (Microsoft Internet Explorer에서), (2K + 53) 2083 인이 제한을 초과가 자동 차단 (경우 양식 제출 제출 버튼)이 작동하지 않습니다.
(2) 파이어 폭스 : 65,536 문자의 파이어 폭스 (파이어 폭스) URL 길이 제한, 미만 10 개 문자의 사실 유효한 URL의 최대 길이.
(3) 크롬 : 8182 위에 크롬 (구글)의 URL 길이 제한 문자가이 문서의 시작 부분에 나열된 오류를 반환합니다.
(4) 사파리 적어도 80,000 문자의 사파리의 URL 길이 제한.
(5) 오페라 : 오페라 브라우저 URL 길이는 190,000 자로 제한됩니다. 190000 주소 표시 줄 Opera9 정상적인 입력 문자를 편집 할 여전히 수.
서버
(1) 아파치 아파치는 URL 길이는 8192 자로 제한됩니다 수용 할 수
Microsoft 인터넷 정보 : (2) IIS 서버 (IIS) 16,384 자로 제한됩니다 URL 길이를 수용 할 수 있습니다. 이것은 변화를 통해 달성 될 수있다

추천

출처www.cnblogs.com/liuqing576598117/p/11424997.html