相同点;
l Get与post(对于“post”除非相应里有cache-control或者expires头域指示其相应不可缓存)请求的相应是可缓存的;
不同点:
1. Get是从服务器上获取数据,post是向服务器传送数据
2. Get是把参数数据队列加到提交表单的action属性所指定的URL中,值和表单中各个字段一一对应,在URL中可以看到,post是通过HTTP post机制,将表单内各个字段与其内容放置在html header内一起传送到action属性所指的URL地址,用户看不到这个过程;
3. get传送的数据量较小,不能大于2kb;post传送的数据量较大,一般被默认为不受限制的。但理论上,IIS4中最大量为80kb,IIs5中为100kb;
4. get安全性非常低;post安全性较高;
5. get适用于多请求,而保留post仅用于更新站点;
6. 在form提交的时候,如果不指定method,则默认为get请求,form中提交的数据将会附加在url之后,以?与URL分开。字母数字字符原样发送,但空格转换为“+”号,其它符号转换为%xx,其中xx为该符号为16进制表示的ASCII(或ISO Latin-1)值;
7. get请求提交的数据放置在HTTP请求协议头中,而post提交的数据则放在实体数据数据中;
GET 请求
//JS var xhr = XHR(); xhr.open("get","test.php?qs=true&userName=abc&pwd=123456",true); xhr.onreadystatechange = function () { if (xhr.readyState==4 && xhr.status ==200) { alert(xhr.responseText); } }; xhr.send(null); //PHP print_r($_GET);
POST 请求
//JS var xhr = XHR(); xhr.open("post","test.php",true); xhr.onreadystatechange = function () { if (xhr.readyState==4 && xhr.status ==200) { alert(xhr.responseText); } }; //比GET请求多了一步 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //另外,数据是通过send方法发送的 xhr.send("qs=true&userName=abc&pwd=123456"); //PHP