HTTP协议详解

一、http协议概念
1.1.http协议的重要性

什么是http协议:大家商议好的共同认可的结果
规定了浏览器与服务端之间数据交互的方式及其他事项
如果我们开发的时候不遵循该协议 那么浏览器就无法识别我们的网站

  • webservice=http+xml
  • rest=http+json
  • api=http+xml+json
1.2.http协议工作流程
  • 初始状态客户端和服务器没有关系
  • 建立连接,发送请求
    连接:管道(虚拟电路)
    客户端按照一定规则向服务器要数据或发送数据
    客户端:浏览器,telnet
    安装telnet:npm install telnet
  • 沿着连接,返回响应信息
    服务器按照一定规则向客户端回应数据,解析html代码、图片文字
    web服务器:apache,nginx,iis
  • 断开连接
1.3.http请求的四大特性

基于请求响应

  • 服务端永远不会主动给客户端发消息 必须是客户端先发请求
  • 如果想让服务端主动给客户端发送消息可以采用其他网络协议

基于请求响应

  • 应用层(HTTP)、传输层、网络层、数据链路层、物理链接层

应用层(HTTP)、传输层、网络层、数据链路层、物理链接层

  • 不保存客户端的状态信息,早期的网站不需要用户注册 所有人访问的网页数据都是一样的

无连接/短连接

  • 两者请求响应之后立刻断绝关系
1.4.http请求消息和响应信息的格式
1.4.1.get请求

请求行:请求方法 请求路径 协议版本

  • get /demo/01.php HTTP/1.1
  • 请求方法:get/post/head/put/delete/trace/options
  • 请求路径(资源):/demo/01.php
  • 协议版本:HTTP/1.1(1.0和0.9版本基本不使用了)

请求头信息:结束 标志是一个空行,有没有头信息和主体信息都需要这个空行做区分

  • Host:localhost

请求主体信息:要发送的内容(可选)

响应行:协议版本 状态码 状态文字

  • HTTP/1.1 200 ok

响应头信息:以key:value的形式,结束标志是一个空行

  • Date:Thu,06 Jun 2013 12:39:02 CMT
  • Content-Length:5,主体长度
  • Content-Type:text/html ,主体类型

响应主体信息:返回的内容(也可能没有)

1.4.2.post请求

在这里插入图片描述

二、http协议方法与状态码
2.1.协议请求方法

GET / POST / HEAD / PUT /PATCH/ DELETE / TRACE / OPTIONS

  • GET(数据库SELECT) :从服务器取出资源(一项或多项)
  • POST(数据库CREATE):在服务器新建一个资源
  • HEAD :获取资源的元数据
    与get类似,但只返回响应头信息,不返回响应主体信息
    使用场景:只想确认一个内容(如照片)是否正常存在,不需要返回内容

以下请求虽然在HTTP协议规定了,但web server未必允许或支持

  • PUT(数据库UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
  • PATCH(数据库UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
  • DELETE(数据库DELETE):从服务器删除资源
  • TRACE:看使用代理时代理有没有修改你的HTTP请求
  • OPTIONS:返回服务器可用的请求方法
    获取信息,关于资源的哪些属性是客户端可以改变的
2.2.协议状态码与状态文字

状态码:反应服务器响应情况

  • 1XX:服务器收到请求,可以等待,也可以继续处理
  • 2XX:请求成功
    200:成功,服务端返回了相应的数据
  • 3XX:重定向,为了完成请求必须采取的进一步措施
    301:永久重定向,配合location 浏览器自动处理,适用于域名到期,浏览器不会访问老的域名
    302:临时重定向,配合location 浏览器自动处理 ,下次会再次访问老的域名;可以控制和拦截,可以做统计
    304:资源未被修改,资源在本地缓存中有效,不需要重新请求
    Not Modified,并不是服务器不知道客户端有没有缓存,而是客户端告诉服务器我有这个图片,通过时间戳信息If-Modified-Since或If-None-Match,如果更改过,就要重新请求网页,响应头中有一个ETag来表示网页有没有被修改
    307:内部重定向,重定向中保持原有的数据请求,在form表单提交时,如果使用301/302可能会导致数据丢失,因为post提交,重定向后变成get请求了,如果使用307,会有post提交,post请求,就不会导致数据丢失了
  • 4XX:客户端错误,请求语法有错误或不能完全被满足
    400:客户端错误
    403:找不到主页,没有权限访问
    404:NOT FOUND,请求的资源未找到
  • 5XX:服务器错误,服务器无法完成明显有效的请求
    500:服务器内部错误(后端主机超时)
    502:找不到后端主机
    503:服务器过载
    504:网关超时
  • 自定义状态码
    在这里插入图片描述

状态文字:描述状态码,便于观察错误信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值