超文本传输协议(HTTP),实现客户端和服务器之间的通信。
http用作客户端和服务器之间的请求——响应协议
web浏览器可以是客户端,并且托管网站的计算机上应用程序可以使服务器。
示例:客户端(浏览器)向服务器提交http请求;然后服务器向客户端返回响应。响应包含请求的状态信息,还可能包含请求的内容。
Http方法
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
get方法
get用于从指定资源请求数据。(最常用方法之一)
注意,查询字符串(名称/值对)在get请求的url中发送:
/test/demo_form.php?name1=value&name2=value2
关于GET请求的一些其他说明
- 可以缓存GET请求
- GET请求保留在浏览器历史记录中
- GET请求可以加入书签
- 在处理敏感数据时,绝不应使用GET请求
- GET请求有长度限制
- GET请求仅用于数据(不修改)
Post方法
post用于将数据发送到服务器以创建/更新资源。(Post最常见方法之一)
使用post发送到服务请的数据存储在HTTP请求的请求主体中:
POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
关于POST请求的一些其他说明;
- POST请求永远不被缓存
- POST请求不会被保留在浏览器历史记录中
- POST请求无法加入书签
- POST请求对数据长度没有限制
PUT方法
PUT用于将数据发送到服务器以创建/更新资源。
POST和PUT之间的区别在于PUT请求是幂等的。也就是说,多次调用相同的PUT请求将始终产出相同的结果。相反,重复调用POST请求会产生多长创建相同资源的副作用。
HEAD方法
HEAD几乎与GET相同,但没有响应体。
换句话说,如果GET/usesrs返回用户列表,则HEAD/usersrs将发出相同的请求,但不会返回用户列表。HEAD请求对于在实际发出get请求之前检查GET请求将返回的内容非常有用。如:下载大文件或响应主体之前。
DELETE方法
DELETE删除指定的资源
OPTIONs方法
OPTIONS方法描述了目标资源的通信选项
比较GET和POST
GET | POST | |
后退按钮/重新加载 | 无 | 数据将重新提交(浏览器应提醒用户数据即将重新提交) |
加入书签 | 可以加入 | 不能加入 |
缓存 | 可以缓存 | 不缓存 |
编码类型 | application/x-www-form-urlencoded | application/ x-www-form-urlencoded或multipart/form-data。对二进制数据使用多部分编码 |
历史 | 参数保留在浏览器历史记录中 | 参数不会保存在浏览器历史记录中 |
数据长度限制 | 有限制,当发送数据时,GET方法将数据添加到URL;URL的长度是有限的(最大URL长度为2048个字符) | 没有限制 |
对数据类型的限制 | 只允许ASCII字符 | 没有限制。也允许二进制数据 |
安全 | GET比POST更不安全,因为发送的数据是URL的一部分 千万不要在发送密码或其他敏感信息时使用GET ! | POST比GET更安全,因为这些参数没有存储在浏览器历史记录或web服务器日志中 |
可见性 | 数据对URL中的每个人都是可见的 | URL中不显示数据 |