Skip to content

HTTP协议

HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。

一、http协议和tcp/ip的区别

HTTP的责任是去定义数据,在两台计算机相互传递信息时,HTTP规定了每段数据以什么形式表达才是能够被另外一台计算机理解。而TCP所要规定的是数据应该怎么传输才能稳定且高效的传递与计算机之间。 http是一种应用层的协议 tcp/ip是传输层的协议,所以从分层上来说 tcp/ip是底层的

HTTP协议过程: Browser - Server

  1. 建立连接(TCP/IP连接)

  2. 发出请求(request)

  3. 处理请求,获得结果

  4. 响应结果(response)

  5. 处理结果(解析响应的结果)

  6. 断开连接

请求状态码(status code):

请求状态码|说明

:---😐:---:

200 |请求成功

300系列 |服务器端发生跳转

400系列 |URL资源出现问题(路径、服务器是否启动)

500系列 |服务器发生了错误

二、http method

http1.0定义了三种:

  • get:向服务器请求资源,比如常见的查询请求

  • POST:向服务器提交数据而发送的请求

  • HEAD:和get类似,返回的响应中没有具体的内容。用于获取报文头

http1.1定义了六种:

  • PUT:一般是更新操作,比如更新信息等

  • PATCH:PUT方法的补充,更新指定资源的部分数据

  • DELETE:用于删除指定的资源

  • OPTIONS:获取服务器支持的HTTP请求方法,服务器性能、跨域检查等

  • CONNECT:方法的作用就是把服务器作为跳板,让服务器去代替用户访问其他网页

  • TRACE:回显服务器的请求,主要用于测试或诊断

三、http状态码

  • 1xx:收到请求,需要请求者继续执行操作,比较少用

  • 2xx:请求成功,常用的200

  • 3xx:重定向,浏览器拿到服务器返回的这个状态,会去查找报文头里的 Location地址跳转

  • 4xx:客户端出错,如400:请求出错,403:无权限访问,404:找不到请求的路径对应的接口 405:不允许此方法进行提交,可能是HTTP METHOD的请求方式不对

  • 500:服务器内部错误,有可能是服务器宕机

四、浏览器跨域解决方法

  • JSONP

  • http响应头配置允许跨域

    • nginx代理服务器

    • 后端程序代码配置

      通过springboot拦截器代码配置
      //表示接受域名的请求,也可以指定域名
      response.setHeader("Access-Control-Allow-Origin",request.getHeader("origin"));
      //该字段可选,是个布尔值,表示是否可以携带cookies
      response.setHeader("Access-Control-Allow-Credentials","true");
      
      //设置跨域的请求方式
      response.setHeader("Access-Control-Allow-Methods","GET,POST,HEAD,PUT,PATCH,DELETE,OPTIONS");
      
      response.setHeader("Access-Control-Allow-Headers","*");