HTTP协议
一.什么是协议
计算机中的协议,同生活中相同,一式双份/多份,双方都遵从共同的一个规范,这个规范就可以称为协议,协议使计算机的语言更加规范,例如fttp,http,stmp,ip协议等,按照一定的规则,向服务器要或者发送数据,服务器按照一定规则,回应数据
二.HTTP工作流程
客户端 ==> WEB服务器(nginx,apache等)
- 客户端发送请求,建立连接,连接就是网络上的虚拟电路
- 沿着连接,服务器返回响应信息
- 客户端接收到响应,html代码解析出图片文字等
- 断开连接
Reaquest Header :请求头信息
请求格式:
- 请求行
- 请求方法 :GET/POST/PUT/DELETE/TRACE/OPTIONS
- 请求路径 URL一部分
- 所用的协议 THHP/1.1协议版本
- 请求头信息(key:value)
- 请求主体信息(发送内容)
Reaponse Header:响应头信息
http只是一种协议,发送方式不仅限于浏览器
- 响应行
- 协议版本
- 状态码
- 状态文字
- 响应头信息(key:value)
- 响应主体 content-length 长度
请求方法虽然在HTTP协议里规定了,但是WEB SERVER未必允许或支持这些方法
//HEAD:和GET基本一致,只是确认内容的存在,不需要返回具体的内容,只返回响应头信息
//TRACE:在使用代理上网的时候,查看代理是否修改你的HTTP请求,
//可以使用TRACE进行测试,服务器会返回收到的请求
//OPTIONS:返回服务器可用的请求方法
三.状态码和状态文字
返回服务器的响应程度
http 状态码:
1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码
2xx (成功)表示成功处理了请求的状态码。
200 – 服务器成功返回网页
3xx(重定向)表示要完成请求,需要进一步操作
301(永久移动)请求的网页已永久移动到新位置。 服务器返回此响应时,会自动将请求者转到新位置。
302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
header ('Location:http://www.baidu.com') //默认302
header ('Location:http://www.baidu.com',true,301)
//指定301,true指用301信息替代原来头信息
304 (未修改) 取的缓存信息,Not Modined
307 (保持原数据,适用于get)
响应头中Last -Modifiend(上次修改日期) 与ETag配合使用客户端的缓存中有这个信息,判断时间和修改状态客户端告知服务器是否发生变化,过期会修改让服务器再次发送(If-Modifiend-Since,If-None-Match)-->发生变化或超出时间,时间戳信息
4xx(请求错误) 表示请求可能出错,妨碍了服务器的处理。
404 – 请求的网页不存在
5xx(服务器错误)
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态