HTTP协议

目录

概述

​编辑

一、HTTP协议介绍

二、HTTP工作过程

三、HTTP协议格式

四、HTTP请求方法

五、HTTP状态码


概述

HTTP协议_第1张图片

一、HTTP协议介绍

HTTP 协议一般指 HTTP(超文本传输协议)。HTTP协议是基于TCP协议来进行数据传输的

HTTP是一个客户端和服务器端请求和应答的标准,主要用于从万维网(即 WWW ,全称 world wide web )服务器传输超文本到本地浏览器之间的请求数据和响应数据的协议。客户端通过使用网页浏览器或者其它的工具发起一个HTTP请求到服务器上指定端口(默认端口为 80 ),服务器在收到请求之后,返回响应内容(文本.图片等) 。

超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。(HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的)

二、HTTP工作过程

  1. 浏览器进行DNS域名解析,得到对应的IP地址
  2. 根据这个IP,找到对应的服务器建立连接(三次握手)
  3. 建立TCP连接后发起HTTP请求(一个完整的http请求报文)
  4. 服务器响应HTTP请求,浏览器得到html代码(服务器如何响应)
  5. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
  6. 浏览器对页面进行渲染呈现给用户
  7. 服务器关闭TCP连接(四次挥手)

三、HTTP协议格式

1.请求:请求行、请求头部、空行和请求数据(主体信息)四部分组成

HTTP协议_第2张图片

注意:头信息结束后有一个空行,(如果有头信息和主体信息),就需要这个空行做区分,即使没有主体信息,空行也不能少。

(1) 请求行:请求方法,请求路径,所用协议

例:POST   /chapter17/user.html  HTTP/1.1

请求方法:GET POST PUT DELETE TRACE HEAD OPTIONS PATCH CONNECT

请求路径:URL的一部分

所用协议:目前是HTTP/1.1

(2)请求头部+空行+请求体

HTTP协议_第3张图片

Host:描述主机服务器地址

Content-Length:表示body数据的长度

Content-type:表示body数据的格式

  • application/x-www-form-urlencoded:form表单提交数据的格式,body参数格式为,query: {字段:参数}
  • application/json:body数据为json格式

Connection:keep-alive,表示长连接,HTTP 长连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。close已关闭

2.响应:响应行+响应头+空行+响应体

HTTP协议_第4张图片

(1) 响应行:报文协议及版本,状态码及状态描述

例:HTTP/1.1  200  OK

(2) 响应头:

Location:指定响应的路径,与状态码302配合使用,完成跳转

Content-Type:响应正文的类型

Content-Disposition:通过浏览器以下载方式解析正文

Set-Cookie:与会话相关技术

(3) 响应体:

响应体,响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染     显示页面内容

四、HTTP请求方法

1.get请求 (重要)

从服务器获取指定的资源,只是用来查询数据,不对服务器的数据做任何的修改,新增,删除等操作。

get请求会把请求的参数附加在URL后面,这样是不安全的,在处理敏感数据时不用,或者参数做加密处理。
get请求其实本身HTTP协议并没有限制它的URL大小,但是不同的浏览器对其有不同的大小长度限制

2.post请求(重要)

根据请求负荷(报文body)对指定的资源做出处理,数据发送到服务器以创建或更新资源,侧重于更新数据.

post请求的请求参数都是请求body中

3.put请求

数据发送到服务器以创建或更新资源,侧重于创建数据

4.delete请求

用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容

5.options请求

用来描述了目标资源的通信选项,返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性!

6.head请求

HEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。

7.connect请求

CONNECT方法用来建立到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。

8.trace请求

TRACE方法用于沿着目标资源的路径执行消息环回测试;它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。

五、HTTP状态码

状态码:由3位数字组成,第一个数字定义了响应的类别

1xx:指示信息,表示请求已接收,继续处理

2XX: 表示服务器成功处理了客户端的请求

  • 200 OK客户端请求成功
  • 204 No Content:无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面。
  • 206 Partial Content:部分内容。服务器成功处理了部分 GET 请求。响应报文中包含Content-Range指定范围的实体内容

3XX: 表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向

  • 300:(多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者选择一项操作,或提供操作列表供请求者选择。
  • 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。
  • 302 Found:临时重定向,表示请求的资源临时搬到了其他位置
  • 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问
  • 304:(未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

4XX: 客户端错误,请求包含语法错误或无法完成请求

  • 400 Bad Request错误请求。客户端请求有语法错误,服务器无法理解。
  • 401 Unauthorized:未授权。请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:禁止。服务器收到请求,但是拒绝提供服务
  • 404 Not Found:未找到。请求资源不存在。比如,输入了错误的url

5XX: 这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错

  • 500:(服务器内部错误) 服务器遇到错误,无法完成请求。
  • 501:(尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
  • 502:(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
  • 504:(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。

你可能感兴趣的:(http,网络协议,网络,计算机网络)