HTTP

介绍

HTTP(HyperText Transfer Protocol)超文本传输协议,计算机网络众多通讯协议中的一种,是用于服务端传送超文本至客户端浏览器的传送协议,基于TCP/IP通讯协议来传输数据。

补充

所谓通讯协议,实质上就是一种通信方式,比如古时候的烽火,当烽火点亮是代表有外敌,没有点亮则无事发生。而在电路、网路中成了二进制0和1,即高电平和低电平,通俗来讲就是有电和没电。但是若只有0和1传输的信息十分有限因而出现了多位二进制来组合成为特定的信息。而接入Internet这个超大型网路后,一条线往往不是单单为了两点间通信而设置的,且大多数的网络都是网状结构,如同蜘蛛网一般,而网络接入点之间往往还有着各种机器(如交换机)为整个网络服务,在如此复杂的公用网络上,若所有人都用各自创造的通讯协议在这公用的网络上通讯时,毫无疑问整个网络系统将无法良好的运作。因此人们制定标准,把多位二进制封装成各式各样的通讯协议,每个通讯协议都有各自的特点,它们的特点都是根据它们的服务对象而设定的,符合其应用场合的,一般其设定都是为了通讯的安全性和效率性。作为普通开发者并不需要了解太过深入,只需熟悉接入的信息发送与接收的方式以及错误反馈如何去处理,若是感兴趣的可以学习一下计算机网络这门课程。

工作原理

HTTP协议是使用在CS(客户端-服务端)架构上,浏览器(客户端)通过URL(统一资源定位符)向服务端发送请求。

特点

简单:每个资源都通过url来定位,一般想访问什么资源,输入url即可。
灵活:可以传输不同数据类型的数据(http协议头部有‘数据类型’项)
无连接:连接一次就会断开,不会保持连接(节省传输时间,节省资源)
无状态:第一次请求结束,断开后,第二次请求,服务器不会记住第一次请求的状态,即不会记忆之前的信息(记住账号密码是通过其它方式完成的,不是通过http,这样的优点是应答快)

HTTP报文结构

请求报文

HTTP请求报文结构

响应报文

HTTP响应报文结构

请求方法

GET:获取资源
POST:传输资源
PUT:更新资源
DELETE:删除资源
HEAD:获取报文头部
CONNECT:将服务器作为代理去访问其它网页然后返回数据
OPTION:允许客户端查看服务器的性能
TRACE:回显服务器收到的请求,主要用于测试或诊断

GET和POST的区别:
1.浏览器回退时,GET不会重新请求,POST会重新请求
2.GET请求会被主动缓存,POST不会
3.GET请求的参数会被保留在历史记录里,POST不会
4.GET请求直接暴露在URL上,POST请求放在请求体上

状态码

分类:
1**:信息,服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理
3**:重定向,需要进一步的操作以完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误

状态码描述
100 Continue继续。客户端应继续其请求
101 Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200 OK请求成功。一般用于GET与POST请求
201 Created已创建。成功请求并创建了新的资源
202 Accepted已接受。已经接受请求,但未处理完成
100 Continue100 Continue
100 Continue100 Continue
100 Continue100 Continue
203 Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204 No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205 Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206 Partial Content部分内容。服务器成功处理了部分GET请求
300 Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301 Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303 See Other查看其它地址。与301类似。使用GET和POST请求查看
304 Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305 Use Proxy使用代理。所请求的资源必须通过代理访问
306 Unused已经被废弃的HTTP状态码
307 Temporary Redirect临时重定向。与302类似。使用GET请求重定向
400 Bad Request客户端请求的语法错误,服务器无法理解
401 Unauthorized请求要求用户的身份认证
402 Payment Required保留,将来使用
403 Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405 Method Not Allowed客户端请求中的方法被禁止
406 Not Acceptable服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408 Request Time-out服务器等待客户端发送的请求时间过长,超时
409 Conflict服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突
410 Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411 Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412 Precondition Failed客户端请求信息的先决条件错误
413 Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414 Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理
415 Unsupported Media Type服务器无法处理请求附带的媒体格式
416 Requested range not satisfiable客户端请求的范围无效
417 Expectation Failed服务器无法满足Expect的请求头信息
500 Internal Server Error服务器内部错误,无法完成请求
501 Not Implemented服务器不支持请求的功能,无法完成请求
502 Bad Gateway充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

根据状态码反馈和报文信息处理前后端数据交互问题是开发者需要注意的地方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值