HTTP协议详解

一、常用的http请求头(浏览器告诉服务器)

1.Accept

Accept: application/json 浏览器可以接受服务器回发的类型为 application/json。

Accept: */* 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)。

2.Accept-Encoding

Accept-Encoding: gzip, deflate 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码)。

3.Accept-Language

Accept-Language:zh-CN,zh;q=0.9 浏览器申明自己接收的语言。

4.Connection

Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

5.Host(发送请求时,该报头域是必需的)(302报错:重定向)

Host:www.baidu.com 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。

6.Referer

Referer:https://www.baidu.com/?start=1当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。

7.User-Agent

User-Agent:Mozilla/...,告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。

8.Cache-Control

Cache-Control:private 默认为private 响应只能够作为私有的缓存,不能再用户间共享

Cache-Control:public 响应会被缓存,并且在多用户间共享。正常情况, 如果要求HTTP认证,响应会自动设置为 private.

Cache-Control:must-revalidate 响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。

Cache-Control:no-cache 响应不会被缓存,而是实时向服务器端请求资源。

Cache-Control:max-age=10 设置缓存最大的有效时间,但是这个参数定义的是时间大小(比如:60)而不是确定的时间点。单位是[秒 seconds]。

Cache-Control:no-store 在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。

9.Cookie

Cookie是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。当然cookie里面的数据不仅仅是上述范围,还有很多信息可以存储是cookie里面,比如sessionid等。

10.Range(用于断点续传)

Range:bytes=0-5 指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。

二、常用的http响应头(服务端给到浏览器)

1.Cache-Control(对应请求中的Cache-Control)

Cache-Control:private 默认为private 响应只能够作为私有的缓存,不能再用户间共享

Cache-Control:public 浏览器和缓存服务器都可以缓存页面信息。

Cache-Control:must-revalidate 对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时。

Cache-Control:no-cache 浏览器和缓存服务器都不应该缓存页面信息。

Cache-Control:max-age=10 是通知浏览器10秒之内不要烦我,自己从缓冲区中刷新。

Cache-Control:no-store 请求和响应的信息都不应该被存储在对方的磁盘系统中。

2.Content-Type

Content-Type:text/html;charset=UTF-8 告诉客户端,资源文件的类型,还有字符编码,客户端通过utf-8对资源进行解码,然后对资源进行html解析。通常我们会看到有些网站是乱码的,往往就是服务器端没有返回正确的编码。

3.Content-Encoding

Content-Encoding:gzip 告诉客户端,服务端发送的资源是采用gzip编码的,客户端看到这个信息后,应该采用gzip对资源进行解码。

4.Date

Date: Tue, 03 Apr 2020 03:52:28 GMT 这个是服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。http协议中发送的时间都是GMT的,这主要是解决在互联网上,不同时区在相互请求资源的时候,时间混乱问题。

5.Server

Server:Tengine/1.4.6 这个是服务器和相对应的版本,只是告诉客户端服务器信息。

6.Transfer-Encoding

Transfer-Encoding:chunked 这个响应头告诉客户端,服务器发送的资源的方式是分块发送的。一般分块发送的资源都是服务器动态生成的,在发送时还不知道发送资源的大小,所以采用分块发送,每一块都是独立的,独立的块都能标示自己的长度,最后一块是0长度的,当客户端读到这个0长度的块时,就可以确定资源已经传输完了。

7.Expires

Expires:Sun, 1 Jan 1994 01:00:00 GMT 这个响应头也是跟缓存有关的,告诉客户端在这个时间前,可以直接访问缓存副本,很显然这个值会存在问题,因为客户端和服务器的时间不一定会都是相同的,如果时间不同就会导致问题。所以这个响应头是没有Cache-Control:max-age=*这个响应头准确的,因为max-age=date中的date是个相对时间,不仅更好理解,也更准确。

8.Last-Modified

Last-Modified: Dec, 26 Dec 2019 17:30:00 GMT 所请求的对象的最后修改日期(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)

9.Connection

Connection:keep-alive 这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的tcp连接也是一个长连接,客户端可以继续使用这个tcp连接发送http请求。

10.Etag

ETag: "637060cd8c284d8af7ad3082f209582d" 就是一个对象(比如URL)的标志值,就一个对象而言,比如一个html文件,如果被修改了,其Etag也会别修改,所以,ETag的作用跟Last-Modified的作用差不多,主要供WEB服务器判断一个对象是否改变了。比如前一次请求某个html文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获得ETag值发送给WEB服务器,然后WEB服务器会把这个ETag跟该文件的当前ETag进行对比,然后就知道这个文件有没有改变了。

11.Refresh

Refresh: 5; url=http://baidu.com 用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。相当于定时刷新

12.Access-Control-Allow-Origin

Access-Control-Allow-Origin: * *号代表所有网站可以跨域资源共享,如果当前字段为*那么Access-Control-Allow-Credentials就不能为true

Access-Control-Allow-Origin: www.baidu.com 指定哪些网站可以跨域资源共享

13.Access-Control-Allow-Methods

Access-Control-Allow-Methods:GET,POST,PUT,DELETE 允许哪些方法来访问

14.Access-Control-Allow-Credentials

Access-Control-Allow-Credentials: true 是否允许发送cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。如果access-control-allow-origin为*,当前字段就不能为true

15.Content-Range

Content-Range: bytes 0-5/7877 指定整个实体中的一部分的插入位置,它也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。

HTTP 错误 400

400 请求出错

由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。

HTTP 错误 401

401.1 未授权:登录失败

此错误表明传输给服务器的证书与登录服务器所需的证书不匹配。

请与 Web 服务器的管理员联系,以确认您是否具有访问所请求资源的权限。

401.2 未授权:服务器的配置导致登录失败

此错误表明传输给服务器的证书与登录服务器所需的证书不匹配。此错误通常由未发送正确的 WWW 验证表头字段所致。

请与 Web 服务器的管理员联系,以确认您是否具有访问所请求资源的权限。

401.3 未授权:由于资源中的 ACL 而未授权

此错误表明客户所传输的证书没有对服务器中特定资源的访问权限。此资源可能是客户机中的地址行所列出的网页或文件,也可能是处理客户机中的地址行所列出的文件所需服务器上的其他文件。

请记录试图访问的完整地址,并与 Web 服务器的管理员联系以确认您是否具有访问所请求资源的权限。

401.4 未授权:授权服务被筛选程序拒绝

此错误表明 Web 服务器已经安装了筛选程序,用以验证连接到服务器的用户。此筛选程序拒绝连接到此服务器的真品证书的访问。

请记录试图访问的完整地址,并与 Web 服务器的管理员联系以确认您是否具有访问所请求资源的权限。

401.5 未授权:ISAPI/CGI 应用程序的授权失败

此错误表明试图使用的 Web服务器中的地址已经安装了 ISAPI 或 CGI程序,在继续之前用以验证用户的证书。此程序拒绝用来连接到服务器的真品证书的访问。

请记录试图访问的完整地址,并与 Web服务器的管理员联系以确认您是否具有访问所请求资源的权限

HTTP 错误 403

403.1 禁止:禁止执行访问

如果从并不允许执行程序的目录中执行 CGI、ISAPI或其他执行程序就可能引起此错误。

如果问题依然存在,请与 Web 服务器的管理员联系。

403.2 禁止:禁止读取访问

如果没有可用的默认网页或未启用此目录的目录浏览,或者试图显示驻留在只标记为执行或脚本权限的目录中的HTML 页时就会导致此错误。

如果问题依然存在,请与 Web 服务器的管理员联系。

403.3 禁止:禁止写访问

如果试图上载或修改不允许写访问的目录中的文件,就会导致此问题。

如果问题依然存在,请与 Web服务器的管理员联系。

403.4 禁止:需要 SSL

此错误表明试图访问的网页受安全套接字层(SSL)的保护。要查看,必须在试图访问的地址前输入https:// 以启用 SSL。

如果问题依然存在,请与 Web服务器的管理员联系。

403.5 禁止:需要 SSL 128

此错误消息表明您试图访问的资源受 128位的安全套接字层(SSL)保护。要查看此资源,需要有支持此SSL 层的浏览器。

请确认浏览器是否支持 128 位 SSL安全性。如果支持,就与 Web服务器的管理员联系,并报告问题。

403.6 禁止:拒绝 IP 地址

如果服务器含有不允许访问此站点的 IP地址列表,并且您正使用的 IP地址在此列表中,就会导致此问题。

如果问题依然存在,请与 Web服务器的管理员联系。

403.7 禁止:需要用户证书

当试图访问的资源要求浏览器具有服务器可识别的用户安全套接字层(SSL)证书时就会导致此问题。可用来验证您是否为此资源的合法用户。

请与 Web服务器的管理员联系以获取有效的用户证书。

403.8 禁止:禁止站点访问

如果 Web服务器不为请求提供服务,或您没有连接到此站点的权限时,就会导致此问题。

请与 Web 服务器的管理员联系。

403.9 禁止访问:所连接的用户太多

如果 Web太忙并且由于流量过大而无法处理您的请求时就会导致此问题。请稍后再次连接。

如果问题依然存在,请与 Web 服务器的管理员联系。

403.10 禁止访问:配置无效

此时 Web 服务器的配置存在问题。

如果问题依然存在,请与 Web服务器的管理员联系。

403.11 禁止访问:密码已更改

在身份验证的过程中如果用户输入错误的密码,就会导致此错误。请刷新网页并重试。

如果问题依然存在,请与 Web服务器的管理员联系。

403.12 禁止访问:映射程序拒绝访问

拒绝用户证书试图访问此 Web 站点。

请与站点管理员联系以建立用户证书权限。如果必要,也可以更改用户证书并重试。

HTTP 错误 404

404 找不到

Web 服务器找不到您所请求的文件或脚本。请检查URL 以确保路径正确。

如果问题依然存在,请与服务器的管理员联系。

HTTP 错误 405

405 不允许此方法

对于请求所标识的资源,不允许使用请求行中所指定的方法。请确保为所请求的资源设置了正确的 MIME 类型。

如果问题依然存在,请与服务器的管理员联系。

1. GET,POST,DELETE,PUT等方法类型不一致

2. URL的问题

3. POST请求的输入参数与所需参数类型不匹配

HTTP 错误 406

406 不可接受

根据此请求中所发送的“接受”标题,此请求所标识的资源只能生成内容特征为“不可接受”的响应实体。

如果问题依然存在,请与服务器的管理员联系。

HTTP 错误 407

407 需要代理身份验证

在可为此请求提供服务之前,您必须验证此代理服务器。请登录到代理服务器,然后重试。

如果问题依然存在,请与 Web 服务器的管理员联系。

HTTP 错误 412

412 前提条件失败

在服务器上测试前提条件时,部分请求标题字段中所给定的前提条件估计为FALSE。客户机将前提条件放置在当前资源 metainformation(标题字段数据)中,以防止所请求的方法被误用到其他资源。

如果问题依然存在,请与 Web 服务器的管理员联系。

HTTP 错误 414

414 Request-URI 太长

Request-URL太长,服务器拒绝服务此请求。仅在下列条件下才有可能发生此条件:

客户机错误地将 POST 请求转换为具有较长的查询信息的 GET 请求。

客户机遇到了重定向问题(例如,指向自身的后缀的重定向前缀)。

服务器正遭受试图利用某些服务器(将固定长度的缓冲区用于读取或执行 Request-URI)中的安全性漏洞的客户干扰。

如果问题依然存在,请与 Web 服务器的管理员联系。

HTTP 错误 415

服务器无法处理请求附带的媒体格式。以下是HTTP的状态码关于415返回码的说明:

415

Unsupported Media Type

服务器无法处理请求附带的媒体格式

@RequestBody注解,主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),后台使用@RequestBody注解,前端是需要使用的Content-Type类型为application/json传入时才能被后端方法接收到,如果使用Content-Type为其他类型时则接收不到。

HTTP 错误 500

500 服务器的内部错误

Web 服务器不能执行此请求。请稍后重试此请求。

如果问题依然存在,请与 Web服务器的管理员联系。

HTTP 错误 501

501 未实现

Web 服务器不支持实现此请求所需的功能。请检查URL 中的错误,如果问题依然存在,请与 Web服务器的管理员联系。

HTTP 错误 502

502 网关出错

当用作网关或代理时,服务器将从试图实现此请求时所访问的upstream 服务器中接收无效的响应。

如果问题依然存在,请与 Web服务器的管理员联系。

503是一种HTTP状态码。英文名为503 Service Unavailable,与404(404 Not Found)同属一种网页状态出错码。前者是服务器出错的一种返回状态,后者是网页程序没有相关结果后返回的一种状态

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP 协议(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是万维网数据传输的基础。它采用客户端-服务器模式,客户端发起请求,服务器返回响应。下面对 HTTP 协议进行详细解析。 HTTP 协议以简洁的请求-响应模型为基础。客户端发送请求报文给服务器,报文包含请求方法、URL、协议版本等信息。服务器收到请求后,根据请求内容进行相应处理,并返回响应报文给客户端。响应报文包含协议版本、状态码、响应头和响应体等信息。客户端接收到响应后,根据状态码判断请求是否成功,并解析响应内容。 HTTP 协议的特点主要包括:无状态、可靠性差、传输效率低。无状态指的是服务器不保存任何客户端的状态信息,每次请求都是单独的。可靠性差是因为 HTTP 使用 TCP 进行数据传输,TCP 协议本身也有一定的不可靠性。传输效率低是由于 HTTP 建立连接的开销较大,并且每次请求都需要重新建立连接。 HTTP 协议的工作流程如下:客户端发送一条请求到服务器,服务器接收并解析请求,处理请求并生成响应,将响应发送给客户端,客户端接收并解析响应。 HTTP 协议的主要优点包括:易于使用、灵活性强、便于扩展。易于使用指的是 HTTP 的语法规则简单明了,易于理解和实现。灵活性强指的是可以通过设置请求头、传递参数等方式来定制请求。便于扩展指的是可以根据需要添加新的功能或特性。 总之,HTTP 协议作为互联网应用最常用的协议之一,它的设计简洁、易于使用,为用户提供了方便、快速的网络通信方式。同时,由于协议本身的一些限制,HTTP 协议的传输效率相对较低,因此在一些对效率要求较高的场景下,可能需要使用其他协议替代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值