HTTP请求方法
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
- GET 请求指定的页面信息,并返回实体主体。
- HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT 从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE 请求服务器删除指定的页面。
- CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- OPTIONS 允许客户端查看服务器的性能。
- TRACE 回显服务器收到的请求,主要用于测试或诊断。
GET和POST请求的区别
提交方式
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连
- POST方法是把提交的数据放在HTTP包的Body中.
因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
传输数据的大小
首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制。
- POST方法提交的数据没有限制. 但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
安全性
POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
缓存的实现原理
与缓存相关的HTTP扩展消息头
- Expires:指示响应内容过期的时间,格林威治时间GMT
- Cache-Control:更细致的控制缓存的内容
- Last-Modified:响应中资源最后一次修改的时间
- ETag:响应中资源的校验值,在服务器上某个时段是唯一标识的。
- Date:服务器的时间
- If-Modified-Since:客户端存取的该资源最后一次修改的时间,同Last-Modified。
- If-None-Match:客户端存取的该资源的检验值,同ETag。
客户端缓存生效的常见流程
服务器收到请求时,会在200OK中回送该资源的Last-Modified和ETag头,客户端将该资源保存在cache中,并记录这两个属性。当客户端需要发送相同的请求时,会在请求中携带If-Modified-Since和If-None-Match两个头。两个头的值分别是响应中Last-Modified和ETag头的值。服务器通过这两个头判断本地资源未发生变化,客户端不需要重新下载,返回304响应
Cookie和Session
- Cookie将状态保存在客户端,Session将状态保存在服务器端。
- Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。Session并没有在HTTP的协议中定义。
- 安全性来说:当你访问一个使用session 的站点,同时在自己机子上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。
Https
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。
https所用的端口号是443。