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
上一篇: sqoop2启动job时报错 java.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException解决方案
下一篇: myeclipse报错:java.lang.RuntimeException: org.dom4j.DocumentException
推荐阅读
-
php中用socket模拟http中post或者get提交数据的示例代码
-
C#模拟http 发送post或get请求的简单实例
-
Linux下模拟http的get/post请求(curl or wget)详解
-
python通过get,post方式发送http请求和接收http响应的方法
-
ajax请求post和get的区别以及get post的选择
-
postman的安装与使用方法(模拟Get和Post请求)
-
关于Ajax的get与post浅分析,同步请求与异步请求;
-
AJAX使用get与post模式的区别分析
-
php中$_REQUEST、$_POST、$_GET的区别和联系小结
-
如何解决Ajax访问不断变化的session的值不一致以及HTTP协议中的GET、POST的区别