HTTP1.0定义了三种请求方法:GET、POST和HEAD方法;
HTTP1.1新增了五种请求方法:OPTION、PUT、DELETE、TRACE和CONNECT方法;
- GET 方法:仅用作数据的读取,请求参数以query的形式附加
- POST 方法:向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能会创建新资源或修改现有资源,请求参数以body的形式传递。
- HEAD 方法:类似于GET请求,但是只请求页面的首部、不请求页面内容。它允许我们单纯获取服务器的响应头信息。
- PUT 方法:PUT 在能力上和 POST 类似,区别在于 PUT 的 URI 指向是具体的某个资源,而不能指向资源集合。从客户端向服务器传送的数据取代指定的文档的内容。同时 PUT 对资源的修改是幂等的。
- DELETE方法:请求服务器删除指定的资源
- OPTIONS方法:用于获取指定服务能够支持的通信选项,允许客户端查看服务器的性能。
- CONNECT方法:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- TRACE方法:回显服务器收到的请求,主要用于测试或诊断。
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
如下情况则须使用POST方式:
Ø 无法使用缓存文件(更新服务器上的文件或数据库)
Ø向服务器发送大量数据(POST 没有数据量限制)
Ø 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
HTML标准中对HTTP协议的用法的约定
GET
- 用于获取数据。
- 使用URL或Cookie传参。(会将参数追加到URL后面)
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制)
使用GET请求经常会发生的一个错误,就是查询字符串的格式有问题.查询字符串中每个参数的名称和值都必须使用encodeURIComponent()进行编码,然后才能放到URL的末尾;而且所有名-值对都必须使用&分隔.
xhr.open("get","example.php?name1=value1&name2=value2",true);
http://localhost:8080/EcommerceSiteLM/user/register.do?username=liumin&password=123456
辅助向现有的URL的末尾添加查询字符串参数
function addURLParam(url,name,value){
url += (url.indexOf("?") == -1 ? "?" : "&");
url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
return url;
}
POST
- 一般用于将数据发给服务器。
- 将数据放在Body中。
- POST的数据可以非常大。
- 更安全,因为数据在地址栏上不可见。
get是把参数数据队列加到提交表单的action属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML header内一起传送到action属性所指的URL地址,用户看不到这个过程。
URL的构造规则(GET带参情况下) 获取参数以JSON显示(编写function)