HTTP协议学习笔记

HTTP(HyperText Transfer Protocol)协议即超文本传输协议,有以下几点作用:

一 ,用于客户端与服务端之间的通信

请求访问资源的一端称为客户端,提供资源相应的一端称为服务端。就仅一条通信线路而言,服务端与客户端是确认的,而HTTP协议可以明确区分哪一端是客户端哪一端是服务端。

二,通过请求和响应的交换达成通信

请求必由客户端发出,然后服务端做出响应,所以在通信过程中客户端永远是主动方。

请求报文首部

GET / HTTP/1.1
#方法及HTTP协议版本
Host: 127.0.0.1 
#被访问的URL完整的主机名称
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101Firefox/56.0
#提供浏览器或者与其它生成请求有关的客户软件的有关信息
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
#告知服务器代理能够处理的媒体类型及相对优先级,q为优先级权重
Referer:xxxxxxxxxxxxxxxxxxxxxxxxx
#用于表示发出请求的原始URL
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
#告知服务器代理能够处理的语言集与优先级,q为优先级权重 
Accept-Encoding: gzip, deflate
#告知服务器代理能够处理的内容编码及优先级,可一次性指定多种编码
Cookie: csrftoken=tv6WTfrvvdFtYNX0wzQCDmm5caxwl8KWDpM8YQewqKTqhXneQNTqhWE4ebtvpEgg; sessionid=ac4wqssoyvhr02f3ewiumcoog881eusp; LanguageMenu_lpmru=zh-CHS
#Cookie消息头用于提交服务器向客户发布的参数
Connection: keep-alive
Upgrade-Insecure-Requests: 1

响应报文首部(为了方便 将所有可能出现的要点放在一个报文,现实中可能并非如此)

HTTP/1.1 200 OK
Date: Tue, 12 Jul 2016 21:36:12 GMT
Server:xxxxxxxxxx
#指明所使用的web服务器软件及版本 有时候还会出现安装模块 操作系统的信息
Set-Cookie:tracking = xxxxxxxxxx
#告知浏览器为当前页面设计cookie
Pragma:no-ache
#告知浏览器不要将响应保存在缓存中
Content-Length: 563
Content-Type: text/html

<html>
    <body>
    Hello http!
    </body>
</html>

响应报文的状态码:

2XX 成功
200:OK
表示从客户端发来的服务在服务端被正常处理了。

204:No Content
表示请求处理成功,但是没有资源可以返回,即响应报文中不包含实体的主体部分,也不允许返回任何实体的主体。换一句话说,当返回204状态码时候,浏览器显示的页面不发生更新

206:Partial Content
表示对客户端进行了范围请求,即对某一部分资源的请求,且服务器正常执行这部分的GET请求,响应报文中包含Content-Range指定范围的实体内容。

3XX 重定向
301: Moved Permanently
永久性重定向,表示请求的资源已经永久分配到了新的URL

302:Found
临时性重定向,表示请求的资源已经临时分配到了新的URL,希望用户本次能使用新的URL访问 但是将来可能还会有改变

303:See Other
表示请求的资源对应着另一个URI,应该使用GET方式定向获取该资源,与302不同的是,303明确指定需使用GET方式获取资源

以上三个状态码返回时,几乎所有的浏览器都会将POST改为GET并删除请求报文内的主体,之后再次发送请求。尽管301 302明确禁止将POST改成GET,但实际上大家都是这么做的

304:Not Modified
表示请求的资源已找到,但是请求不符合条件,不回应任何响应的主体部分。虽然也在3XX中,但是304与重定向没有任何的关系

307:Temporary Redirect
临时重定向,和302区别不大,因为上面已经说过302标准大家并不遵守

4XX 客户端错误

400:Bad Request
表示请求报文中存在语法错误 需修改请求后再次发送。浏览器会像处理200OK一样对待400

401:Unauthorized
表示发送的请求需要通过HTTP的验证,如果之前已经进行过一次请求,则表示用户认证失败。

403:Forbidden
表示请求资源的访问被服务器拒绝了,而且服务端没必要给出理由

404:Not Found
表示服务器上无法找到请求的资源,也可以用于服务器拒绝请求并不想说明理由时使用

5XX 服务器错误

500 Internal Server Error
表示服务器在执行请求的时候发生错误,也可能是web应用的bug或者临时故障。

503 Service Unavailable
表示服务器超负载或者停机维修,无法处理请求

三,HTTP是不保存状态的协议

HTTP协议作为一种无状态协议自身并不保存通信状态。所以无论是请求还是回应都不会被HTTP协议保存下来。但是为了满足一些特定需求,比如跳转后保留用户登录状态,引入了cookie。

四,请求URI定位资源

因URI的特定功能,在互联网上的任意位置上的资源都可以访问到。

五,告知服务器意图的HTTP方法

HTTP/1.1
1:GET:请求访问已被URI识别的资源
2:POST:传输实体主体
3:PUT:传输文件 但是如果不加限制可能造成任意文件上传 所以多不应用这一方法
4: HEAD:和GET方法一样,但是不返回报文主体
5:DELETE:删除指定资源, 和PUT方法一样不安全
6:OPTIONS:查询针对请求URI指定资源时支持的方法(比如返回的是POST GET HEAD OPTIONS,那么这个URI指定的资源就支持这4种方法)
7: TRACE:让服务端将客户端之前发出去的请求通信回环给客户端。客户端可以通过这种方法查看自己发送的请求是怎样被加工的。但是正因如此也容易引发跨站追踪攻击,因此不会被用到。
8:CONNECT:要求用隧道协议连接代理

参考书籍《图解HTTP》、《黑客攻防技术宝典(web实战篇)》

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值