Web: HTTP基本知识

发布时间 2023-09-25 22:23:02作者: demo41

HTTP概念

  超文本传输协议(HTTPHyperText Transfer Protocol)联网上应用最为广泛的一种网络协

议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

  HTTP协议和TCP/IP协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。

HTTP协议结构

HTTP通信过程:客户端主动向服务端发送请求,服务端接收并响应

先从客户端开始建立通信,服务端在没接收到请求之前不会发送响应。

HTTP报文:用于HTTP协议交互的信息被称为HTTP报文

  • 请求端的HTTP报文叫做请求报文,响应端的叫做响应报文。
  • HTTP报文是由多行(CR+LF作换行符)数据构成的字符串文本。

  • 【报文首部】服务器端或客户端需处理的请求或响应的内容及属性
  • 【CR+LF】CR(Carrige Return,回车符)和LF(Line Feed,换行符)
  • 【报文主体】应被发送的数据

请求报文及响应报文的结构

HTTP请求报文

HTTP方法——用于下达命令,用于告诉服务器端如何处理请求

l   GET(一般不用get方法传输,用post方法)

请求访问已被URI识别的资源。

l   POST

传输实体的主体。

l   PUT

传输文件

l   HEAD

HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。

l   DELETE

删除文件

l   OPTIONS

查询针对请求URI指定的资源支持的方法。

l   TRACE

让Web服务器端将之前的请求通信环回给客户端。

HTTP响应报文

 

 

状态码表示请求成功或失败的数字代码

HTTP状态码——负责表示客户端HTTP请求的返回结果,标记服务器端的处理是否正常,通知的错误等工作

l   1XX

信息性状态码,接收的请求正在处理

l   2XX

成功状态码,请求正常处理完毕

l   3XX

重定向状态码,需要进行附加操作以完成请求

l   4XX

客户端错误状态码,服务器无法处理请求

l   5XX

服务器错误状态码,服务器处理请求出错

HTTP常见状态码

l   200OK

表示从客户端发来的请求在服务器端被正常处理了。

l   301 MOVED Permanently

永久性重定向,表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URL。

l   302 Found

临时性重定向,表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。

l   304 Not Modified

客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304状态码返回时,不包含任何响应的主体部分。

l   400 Bad Request

表示请求报文中存在语法错误,当错误发生时,需修改请求的内容后再次发送请求。

l   401 Unauthorized

该状态码表示发送的请求需要有通过HTTP认证(如BASIC、DIGEST认证)的认证信息。若之前已进行过1次请求,则表示用户认证失败

l   403 Forbidden

表明对请求资源的访问被服务器拒绝了。

l   404 Not Found

表明服务器上无法找到请求的资源

l   500 Internal Server Error

表明服务器端在执行请求时发生了错误,也有可能是Wb应用存在的bug或某些临时的故障。

l   503 Service Unavailable

表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

HTTP是一种无状态协议——自身不对请求和响应之间的通信状态进行保存

  • 协议对发送的请求或响应,都不做持久化的处理——为了更快地处理了大量事物,确保协议地可伸缩性
  • 为了实现保存状态地功能,引入了Cookie:sid

HTTP首部字段——HTTP报文的要素之一

  • 无论请求还是响应都能用到首部字段,起到传递额外重要信息的作用
  • 给浏览器和服务器提供报文主体大小、使用语言,认证信息等内容

HTTP首部字段结构

  • 首部字段名:字段值           例如:Content-Type:text/html
  • 单个HTTP首部字段可以有多个值          例如:Keep-Alive:timeout=15,max=100

HTTP首部字段类型

l   通用首部字段

请求报文和响应报文两方都会使用的首部。

l   请求首部字段

从客户端向服务器端发送请求报文时使用的首部,补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。

l   响应首部字段

从服务器端向客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端附加额外的内容信息。

l   实体首部字段

针对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息。

通用首部字段

l   Cache-Control

通过指定首部字段Cache-Controlp的指令,就能操作缓存的工作机制;

l   Connection

控制不再转发给代理的首部字段;管理持久连接

l   Date

表明创建HTTP报文的日期和时间

l   Via

使用首部字段Via是为了追踪客户端与服务器之间的请求和响应报文的传输路径。报文经过代理或网关时,会先在首部字段Via中附加该服务器的信息,然后再进行转发。首部字段Vi不仅用于追踪报文的转发,还可避免请求回环的发生,所以必须在经过代理时附加该首部字段内容。

请求首部字段

l   Accept

  1. Accepti首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级,可使用type/subtypei这种形式,一次指定多种媒体类型。
  2. 文本文件:text/html,text/plain,text/css,application/xhtml-+xml,application/xml
  3. 图片文件:image/jpeg,image/gif,image/png
  4. 应用程序使用的二进制文件:application/octet-stream,application/zip

l   Accept-Language

  • 首部字段Accept-Language)用来告知服务器用户代理能够处理的自然语言集(指中文或英文等),以及自然语言集的相对优先级,可一次指定多种自然语言集,按权重值q来表示相对优先级。
  • Accept-Language:zh-cn,zh;q=0.7,en-us,en;q=0.3

l   Authorization

  • 用来告知服务器,用户代理的认证信息
  • Authorization:Basic dWVub3N1bjpwYXNzd29yZA==

l   Host

  • 首部字段Host会告知服务器,请求的资源所处的互联网主机名和端口号。Host首部字段在HTTP/1.1规范内是唯—一个必须被包含在请求内的首部字段。

l   Referer

  • 首部字段Referera会告知服务器请求的原始资源的URI。
  • Referer:http://www.example.com/index.php

l   User-Agent

  • 首部字段User-Agents会将创建请求的浏览器和用户代理名称等信息传达给服务器。
  • User-Agent:Mozilla/5.0(Macintosh;Intel Mac OS X 10_13_2)
  • AppleWebKit/537.36 (KHTML,like Gecko)Chrome/66.0.3359.181
  • Safari/537.36

响应首部字段

l   Location

  • 使用首部字段Location可以将响应接收方引导至某个与请求URI位置不同的资源。

l   Server

  • 首部字段Server告知客户端当前服务器上安装的HTTP服务器应用程序的信息。
  • Server:Apache/2.2.6 (Unix)PHP/5.2.5

实体首部字段

l   Allow

通知客户端能够支持的所有HTTP方法,服务器会把所有能支持的HTTP方法写入首部字段Allow后返回。

当服务器接收到不支持的HTTP方法时,会以状态码4O5 Method Not Allowed作为响应返回。

Allow:GET,HEAD,POST

l   Content-Length

实体主体部分的大小(单位是字节)。

Content-Length:1000

l   ontent-Type

实体主体内对象的媒体类型,字段值用type/subtypei形式赋值。

Content-Type:text/html;charset=UTF-8