HTTP協議中 GET 與 POST 請求的區別

1、針對這個問題,要考慮基於什麼前提的,如果什麼前提都沒有 ,不使用任何規範,只考慮語法和理論上的HTTP協議 GET 和 POST 幾乎沒什麼區別,只有名字不一樣。

 

2、如果基於RFC規範:

(1)、理論上: 的GET 和 POST 有相同的語法,但是有不同的語義。GET是獲取數據,POST 是發送數據,其他方面沒有區別

(2)、現實上: 各種瀏覽器就是這個協議的實現者 。

不同如下:

<1>、GET的數據在URL中可見,POST的數據不顯示在URL中。

<2>、GET的長度是有限制的,POST的長度不限制。

<3>、GET請求的數據可以收藏爲書籤,POST請求的不行

<4>、GET的編碼類型 :application/x-www-form-url,POST的編碼類型有很多其中最常見的有:encodeapplication/x-www-form-urlencode、multipart/form-data

<5>、GET歷史參數會被保留在瀏覽器、POST不會保留。

<6>、GET只允許發ASCII、POST 請求沒有編碼限制 ,還允許發二進制

<7>、GET和POST 相比 安全性較差、以爲所發送數據爲URL一部分。

 

在javascript 原生的 發送請求中 ,這種區別真的微乎其微

              if(window.XMLHttpRequest){
                 xhr = new XMLHttpRequest();
             }else{
                 xhr = new ActiveXObject('Microsoft.XMLHTTP');
             }

            if(type == 'GET'){
                xhr.open('GET',url + '?' + data,true);
                xhr.send();
             }else if(type == 'POST'){
                xhr.open('POST',url,true);
                xhr.send(data);
             }

瀏覽器URL長度限制:

1、IE

IE瀏覽器(Microsoft Internet Explorer) 對url長度限制是2083(2K+53),超過這個限制,則自動截斷(若是form提交則提交按鈕不起作用)。

2、firefox

firefox(火狐瀏覽器)的url長度限制爲 65 536字符,但實際上有效的URL最大長度不少於100,000個字符。

3、chrome

chrome(谷歌)的url長度限制超過8182個字符返回本文開頭時列出的錯誤。

4、Safari

Safari的url長度限制至少爲 80 000 字符。

5、Opera

Opera 瀏覽器的url長度限制爲190 000 字符。Opera 9 地址欄中輸入190 000字符時依然能正常編輯。

 

服務器長度限制:
 

1、Apache

Apache能接受url長度限制爲8 192 字符

2、IIS

Microsoft Internet Information Server(IIS)能接受url長度限制爲16 384個字符。
這個是可以通過修改的(IIS7)configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryStringsetting.<requestLimits maxQueryString="length"/>

3、Perl HTTP::Daemon

Perl HTTP::Daemon 至少可以接受url長度限制爲8000字符。Perl HTTP::Daemon中限制HTTP request headers的總長度不超過16 384字節(不包括post,file uploads等)。但當url超過8000字符時會返回413錯誤。
這個限制可以被修改,在Daemon.pm查找16×1024並更改成更大的值。

4、ngnix

可以通過修改配置來改變url請求串的url長度限制。

client_header_buffer_size 默認值:client_header_buffer_size 1k

large_client_header_buffers默認值 :large_client_header_buffers 4 4k/8k

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章