文章目录
HTTP1.0的请求方法
HTTP1.0的三种请求方法
GET
- 请求指定的页面信息,并返回实体主体。
- GET请求请提交的数据放置在HTTP请求协议头中,GET方法通过URL请求来传递用户的输入,GET方式的提交你需要用Request.QueryString来取得变量的值。
- GET方法提交数据,可能会带来安全性的问题,数据被浏览器缓存。
- GET请求有长度限制,只支持2048个字符。
// 发起请求
http://localhost/general/form/getpost.asp?Text=Hello+World
// 解析请求参数(asp语法)
<% If Request.QueryString(“Text”) <> ““ Then %>
通过get方法传递来的字符串是: “<B><%= Request.QueryString(“Text”) %></B>“<BR>
<% End If %>
HEAD
- 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST
- 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
- POST请求可能会导致新的资源的建立和/或已有资源的修改。
- POST方式提交时,你必须通过Request.Form来访问提交的内容
// 发起请求
http://localhost/general/form/getpost.asp
// 解析请求参数(asp语法)
<% If Request.Form(“Text”) <> ““ Then %>
通过Post方法传递来的字符串是: “<B><%= Request.Form(“Text”) %></B>“<BR>
<% End If %>
GET请求的标准格式
常见发起GET请求的方式有:URL 、src/href、表单(form)。
GET方式提交数据的格式:
index.php?userName=jack&password=123
注意:
index.php?key=value&key=value。 userName=jack&password=123 叫做查询字符串
参数名与参数值之间没有空格
参数值不需要使用单双引号包括
GET方式提交数据特点:
1、get方式在url后面拼接参数,只能以文本的形式传递参数。
2、传递的数据量小,4kb左右(不同浏览器会有差异)。
3、安全性低,会将信息显示在地址栏。
4、速度快,通常用于对安全性要求不高的请求。
POST请求提交表单,上传文件的方法
POST就是发送、提交。可以向指定的资源提交要被处理的数据。
如果使用表单方式进行提交,表单的method必须设置为POST。
post方式提交的特点:
1、post提交数据相对于get的安全性高一些。(注意:抓包软件也会抓到post的内容,安全性要求高可以进行加密)
2、传递数据量大,请求对数据长度没有要求。
3、请求不会被缓存,也不会保留在浏览器的历史记录中。
4、用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等。
5、POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改)
01 multipart/form-data
multipart/form-data 是新增的编码类型,以提高二进制文件的传输效率。这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。 某表单的源代码如下:
<form action="upload.php" enctype="multipart/form-data" method="post">
<input name="myflie" type="file" />
<input type="submit" />
当在该表单输入内容进行提交的时候就会产生一个POST请求,其中的Content-Type参数值就会被设置为multipart/form-data
同时还会因为其特殊的格式增加一个boundary参数,这个参数是一个分隔符,分隔多个文件、表单项,他的值要足够的复杂或者随机,以保证不会与上传表单或者文件的内容出现重复。
请求头部分内容如下:
POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
可以看到消息体被boundary分隔开了,整个消息体以 --boundary开始,各个表单的内容使用–boundary分隔开,最后使用–boundary–来结束
02 application/x-www-form-urlencoded
这是最常见的POST提交数据的方法了吧。在源代码未知道enctype的时候默认就使用这种方式来提交。请求头类似于这样:
POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
可以看到消息体中提交的内容使用&进行连接,同时使用了URL编码,**所以就像是把GET请求的参数放到消息体中一样。**大部分服务端语言都对这种方式有很好的支持。很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
03 application/json
由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。同时json可以支持比普通的键值对更加复杂的数据,因此越来越多的人开始使用这种方式进行数据传输。
POST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8
{"title":"test","sub":[1,2,3]}
04 其他特殊content-type
HEAD请求与GET请求的区别
HEAD方法和GET方法一样,只是不返回报文主体部分,只请求页面的首部。用于确认URI的有效性及资源更新的日期时间等。
HTTP1.1新增的请求方法
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | DELETE | 请求服务器删除指定的页面。 |
6 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |