HTTP协议

一、什么是HTTP协议
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。HTTP协议,亦超文本传输协议,是一种在应用层上的通信协议,Web使用该协议完成从客户端到服务器端的一系列流程。

二、HTTP协议格式
1、HTTP请求
(1)首行:【方法】+【URL】+【版本】
(2)Header:请求的属性,冒号分隔的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束。
(3)Body:空行后面都是Body。Body允许为空字符串,如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度。

2、HTTP响应
(1)首行:【版本号】+【状态码】+【状态码解释】
(2)Header:请求的属性,冒号分隔的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束。
(3)Body:空行后面的内容都是Body。Body允许为空字符串,如果Body存在,则在Header中会有一个Content-Length属性来标识长度;如果服务器返回了一个HTML页面,那么HTML页面内容就在body中。

三、HTTP的方法
1、HTTP/1.0 和 HTTP/1.1 支持的方法
这里写图片描述
2、GET:获取资源
GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。如图所示:
这里写图片描述
【例】
这里写图片描述
3、POST:传输实体主体
POST方法用来传输实体的主体。虽然用GET方法也可以传输实体的主体,但是一般不用GET方法进行传输,而是用POST方法。POST的主要目的是给服务器发送请求报文。如下图所示:
这里写图片描述
【例】
这里写图片描述
4、GET和POST的区别
POST和GET能向服务器传送请求报文,并且都会从服务器接收响应数据。
(1)区别:
1)传送方式:get通过地址栏传输,post通过报文传输,不会将数据显示出来(安全)。
2)传送长度:get参数有长度限制(受限于URL长度),而post无限制
3)产生的数据包:GET产生一个TCP数据包;POST产生两个TCP数据包。
A、对于GET方式的请求,浏览器会把HTTP Header和Data一并发送出去,服务器响应200(返回数据);
B、对于POST,浏览器先发送Header,服务器响应100后,浏览器再发送Data。
也就是说,GET只需要汽车跑一趟就把货送到了。而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”;第二趟再把货送过去。因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效,但是使用POST更安全。
(2)建议:
1)GET方式的安全性较POST方式要差些,包含机密信息的话,建议用Post。
2)在做数据查询时,建议用GET方式;而在做数据添加、修改或删除时,建议用POST。

四、URL
URL,统一资源定位符,指定文档所在的位置,亦称为网址。其格式如下:
这里写图片描述
1)协议方案名:指要获取资源时要指定的协议类型,如“http:”、“https:”,也可使用“data:”或 “javascript:” 这类指定数据或脚本程序的方案名,它们都不区分大小写。
2)登录信息:指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份
认证)。
3)服务器地址:指定待访问的服务器地址。地址可以是类似hackr.jp这种DNS可解析的名称,或是 192.168.1.1 这类 IPv4 地址名。
4)服务器端口号:指定服务器连接的网络端口号。
5)带层次的文件路径:指定服务器上的文件路径来定位特指的资源。
6)查询字符串:针对已指定的文件内的资源,查询字符串。
7)片段标识符:使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。

五、HTTP的状态码
1、状态码的概念
HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。如下图表示:
这里写图片描述
2、状态码的分类:
这里写图片描述
(1)2XX编码 成功
2XX的响应结果表明请求被正常处理了。
1)200 OK
该状态码表示从客户端发来的请求被服务器端正常处理了。如下图所示:
这里写图片描述
2)204 No Content
该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回 204 响应,那么浏览器显示的页面不发生更新。一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。如下图所示:
这里写图片描述
3)206 Partial Content
该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容。如下图所示:
这里写图片描述
(2)3XX编码 重定向
3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
1)301 Moved Permanently:永久性重定向
该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的 URI。也就是说,如果已经把资源对应的 URI保存为书签了,这时应该按 Location 首部字段提示的URI重新保存。如下图所示:
这里写图片描述
【例】
http://example.com/sample
释:当指定资源路径的最后忘记添加斜杠“/”,就会产生 301 状态码。

2)302 Found:临时性重定向
该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。和301 Moved Permanently状态码相似,但302状态码代表的资源不是永久移动,只是临时性质。换句话说,已移动的资源对应的URI将来还有可能发生改变。如下图所示:
这里写图片描述
【例】
用户把URI保存成书签,但不会像301状态码出现那样去更新书签,而是仍然保留返回302状态码的页面对应的URI。

3)304 Not Modified
该状态码表示客户端发送附带条件的请求 2 时,服务器端允许请求访问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。如下图所示:
这里写图片描述
(4)4XX编码 客户端错误
4XX的响应结果表明客户端是发生错误的原因所在。
1)400 Bad Request
该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。如下图所示:
这里写图片描述
2)401 Unauthorized
该状态码表示发送的信息需要通过HTTP认证。浏览器如果第一次接收到401响应,则会弹出认证对话窗口;如果第二次接收到401响应,,则表示用户认证失败。
如下图所示:
这里写图片描述
3)403 Forbidden
该状态码表明对请求资源的访问被服务器拒绝了。拒绝的原因可能是:未获得文件系统的访问权限。如下图所示:
这里写图片描述
4)404 Not Found
该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器拒绝请求且不想说明理由时使用。如下图所示:
这里写图片描述
(5)5XX编码 服务器错误
5XX响应结果表明服务器本身发生错误。
1)500 Internal Server Error
该状态码表明服务器在处理请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。如下图所示:
这里写图片描述
2)503 Service Unavailable
该状态码表明服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求。如下图所示:
这里写图片描述
六、HTTP常见的Header
1)Content-Type:数据类型(text/html)
2)Content-Length:Body的长度
3)Host:客户端告知服务器,所请求的资源是在哪个主机的哪个端口上
4)Use-Agent:声明用户的操作系统和浏览器版本信息。
5)referer:当前页面是从哪个页面跳转过来的。
6)location:搭配3XX状态码使用,告诉客户端接下来要去哪里访问。
7)Cookie:用于客户端存储少量信息,通常用于实现会话(session)功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值