导航
导航
文章目录
  1. 1、HTTP
  2. 2、参数
  3. 3、记录
  4. 4、编码
  5. 5、扩展:

GET vs. POST

1、HTTP

从HTTP规范的语义角度讲,GET表示从指定的资源请求数据,POST表示向指定的资源提交要被处理的数据
GET与POST请求可分别对应CURD中的查询和更新操作
另外,GET应为安全的,即GET请求不应产生副作用,向服务器发起的GET请求不应修改服务器上的资源,POST表示可能发生修改

2、参数

GET的查询字符串(名称/值对)使用放在GET请求的URL中发送,POST的查询字符串(名称/值对)是在请求的HTTP消息主体重发送
因此,由于浏览器对URL长度的限制,GET请求有长度限制,而POST请求对数据长度没有要求
另外,因为GET请求将参数放在URL中,会被写入服务器日志,较为不安全

3、记录

GET请求可被缓存、保留在浏览器历史记录中、可被收藏为书签
POST请求不会被缓存、不会保留在浏览器历史记录中、不能被收藏为书签
因此,POST请求更加安全,GET请求不应再处理敏感数据时使用

4、编码

GET请求只允许ASCII字符,POST没有限制,也允许二进制数据,支持整个ISO10646字符集,默认使用ISO-8859-1编码
对于特殊字符,如中文,GET请求需要通过url encode后才可以发出,浏览器各自行为不同,一般网站都会在js代码中完成编码,替浏览器做好该步骤,统一编码,Java程序可使用java.net.URLEncoder编码

5、扩展:

HTTP请求方法:
方法 描述
HEAD 与GET相同,但只返回HTTP报头,不返回文档主体
PUT 上传指定的URI表示
DELETE 删除指定资源
OPTIONS 返回服务器支持的HTTP方法
CONNECT 把请求连接转换到透明的TCP/IP通道

参考:
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
http://www.jb51.net/web/12714.html