http协议及状态码

      最后更新:2022-07-11 07:05:19 手机定位技术交流文章

      HTTP简介

      HTTP协议是 Hyper Text Transfer Protocol的一个缩写。它是用于分布式、协作和超级媒体信息系统的一种应用层协议。它是最广泛的互联网应用网络传输协议,所有 WW 文件必须符合这个标准。

      HTTP被设计为网络浏览器和网络服务器之间的通信,但也可以用于其他目的。

      HTTP是传输数据(HTML文件、图像文件、查询结果等)的TCP/IP通信协议。

      1.HTTP工作原理

      HTTP协议在客户端-服务器架构上运行。浏览器作为HTTP客户端,通过URL发送所有请求给HTTP服务器。

      网页服务器包括:Apache服务器,IIS服务器,Nginx

      网络服务器根据收到的请求向客户端发送响应消息。

      默认的HTTP端口号码是80,但您可以将其更改为8080或其他端口。

      HTTP三个注释:

      • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
      • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
      • HTTP无状态: HTTP协议无状态。无状态意味着协议没有处理事务的内存容量。缺乏状态意味着,如果后续行动需要事先的资料,则它必须重传,这可能导致每次连接时发送的数据量增加。另一方面,当服务器不需要以前的信息时,它会更快地响应。

      2.HTTP消息结构

      HTTP是一个通过可靠的链接交换信息的客户端/服务器(C/S)架构模型,是一个无状态请求/响应协议。

      一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

      HTTP“服务器”也是一种应用程序(通常是一个Web服务,例如Apache Web服务器或IIS服务器),接收客户端的请求并向客户端发送HTTP响应数据。

      HTTP使用统一资源标识符(Uniform Resource Identifiers,URI)来传输数据和建立连接。

      一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

      2.1.客户请求消息

      客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。img

      2.2.服务器响应消息

      HTTP响应也由四个部分组成:状态行、消息头条、空行和响应规则表达式,分别。

      HTTP请求方法

      根据HTTP标准,HTTP请求可以使用多个请求方法。

      HTTP1.0定义了三个请求方法:GET、 POST和HEAD。

      HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

      序号 方法 描述
      1 GET 请求指定的页面信息并返回实体主体。
      2 HEAD 与GET请求类似,它只在返回的响应中没有具体的内容来获取标题
      3 POST 向指定资源提交数据处理请求(例如提交表格或上传文件)。 数据包含在请求机构中。 POST请求可能导致创建新的资源和/或修改现有资源。
      4 PUT 从客户端发送到服务器的数据替换指定文档的内容。
      5 DELETE 要求服务器删除指定的页面。
      6 CONNECT HTTP/1.1协议保留了能将连接转换为管道模式的代理服务器。
      7 OPTIONS 允许客户端查看服务器性能。
      8 TRACE 逆显示服务器接收的请求主要用于测试或诊断。
      9 PATCH 它是PUT方法的补充,用于本地更新已知资源。

      HTTP状态代码

      当访客浏览网页时,查看器的浏览器向服务器发送该页面的位置请求。在浏览器接收和显示网页之前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

      HTTP 状态码的英文为HTTP Status Code。。

      以下是常见的HTTP状态代码:

      • 200 - 请求成功
      • 301-资源(例如网页)永久转移到其他URL
      • 404 - 请求的资源(例如网页)不存在
      • 500 - 内部服务器错误

      4.1,HTTP状态代码分类

      HTTP状态代码由三个十进制数字组成,第一个十进制数字定义了国家代码的类型。答复分为五个类别:信息答复(100–199),成功反应(200-299),重定位(300-399),客户端错误(400-499)和服务器错误(500-599):

      分类 分类描述
      1** 服务器收到请求要求请求者继续执行操作的信息
      2** 操作成功接受并处理
      3** 重新定位需要进一步的操作完成请求
      4** 客户错误,包含语法错误的请求或无法完成请求
      5** 当服务器处理请求时发生服务器错误

      HTTP状态代码列表:

      状态码 状态码英文名称 中文描述
      100 Continue 继续下去。 客户应该继续要求
      101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
      200 OK 请求成功。 一般用于GET和 POST请求
      201 Created 创建。 成功地请求并创建新的资源
      202 Accepted 请求接受,但未处理完成
      203 Non-Authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
      204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
      205 Reset Content 如果服务器正常处理,用户端口(例如浏览器)应该重新定位文件视图。 这个返回代码可以清除浏览器的表格字段
      206 Partial Content 内容的一部分。 服务器成功处理了一些GET请求
      300 Multiple Choices 请求的资源可以包含多个位置,相应地返回用户终端(例如浏览器)选择的资源功能和地址列表
      301 Moved Permanently 请求资源已经永久移到一个新的URI,返回信息将包含一个新的URI,浏览器将自动导航到新的URI。 今后任何新的请求都应该被一个新的URI取代
      302 Found 它与301类似,但资源只能暂时移动。 用户应该继续使用原来的URI
      303 See Other 类似于301。 使用GET和 POST请求查看
      304 Not Modified 请求的资源未被修改,当服务器返回此状态代码时,服务器不会返回任何资源。 客户通常通过提供一个标记,表示客户只在指定日期后返回修改的资源,以缓存访问的资源
      305 Use Proxy 使用代理。 请求的资源必须通过代理访问
      306 Unused 已经丢弃的HTTP状态代码
      307 Temporary Redirect 临时重新定位。 类似于 302。 使用GET请求重新定位
      400 Bad Request 客户端请求有一个语法错误,服务器无法理解
      401 Unauthorized 请求用户身份验证
      402 Payment Required 保留,将来使用
      403 Forbidden 服务器了解客户端的请求,但拒绝执行请求
      404 Not Found 服务器无法根据客户的要求找到资源(页面)。 通过这个代码,网站设计师可以设置个人页面“您请求的资源无法找到”
      405 Method Not Allowed 客户端请求中的方法被禁止
      406 Not Acceptable 服务器不能根据客户端请求的内容特性完成请求
      407 Proxy Authentication Required 请求要求代理人的认证,类似于401,但请求者应该使用代理人进行授权
      408 Request Time-out 服务器等待客户端发送请求太长,太晚
      409 Conflict 当服务器完成客户端PUT请求时,该代码可以返回,当服务器处理请求时发生冲突
      410 Gone 客户请求的资源不再存在。 410与404不同,如果以前使用的资源现在以410代码永久删除,网站设计师可以通过301代码指定资源的新位置
      411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息
      412 Precondition Failed 客户请求信息的前提错误
      413 Request Entity Too Large 由于请求的实体太大,服务器无法处理请求,因此请求被拒绝。 为了防止客户端继续请求,服务器可能关闭连接。 如果服务器暂时无法处理,它将包含一个“再尝试后”响应
      414 Request-URI Too Large 请求的URI太长(URI通常是URL),服务器无法处理
      415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
      416 Requested range not satisfiable 客户端请求的范围无效
      417 Expectation Failed 服务器无法满足预期请求标题信息
      500 Internal Server Error 内部服务器错误,无法完成请求
      501 Not Implemented 服务器不支持请求函数,无法完成请求
      502 Bad Gateway 当服务器试图作为门户或代理执行请求时,远程服务器收到一个无效的响应
      503 Service Unavailable 由于过载或系统维护,服务器暂时无法处理客户端请求。 延迟的长度可以包含在服务器的“再尝试后”项中
      504 Gateway Time-out 作为门户或代理的服务器,不会及时从远程服务器接收请求。
      505 HTTP Version not supported 服务器不支持请求的HTTP协议版本,无法处理它

      5、HTTP头

      HTTP消息又称为HTTP头(http header),由四部分组成,分别是请求头、响应头、普通头、和实体头。从名称看我们就知道他们所处的位置。

      5.HTTP请求标题信息

      请求头只出现在HTTP请求中,

      5.2,HTTP响应头部信息

      HTTP请求头提供关于请求、响应或其他发送实体的信息。

      在本节我们将详细介绍HTTP响应标题信息。

      应答头 说明
      Allow 服务器支持哪些请求方法(例如GET、 POST等)。
      Content-Encoding 文档编码方法。只有在解码后才能获得在“内容类型”标题中指定的内容类型。使用gzip压缩文档可以大大降低HTML文档的下载时间。Java的GZIPOutputStream可以方便地压缩gzip,然而,只有Unix上的Netscape和Windows上的IE4和IE5都支持它。因此,Servlet应该通过查看Accept-Encoding头(即request.getHeader(“Accept-Encoding”))检查浏览器是否支持gzip,返回由gzip压缩的HTML页面,用于gzip启用浏览器,返回其他浏览器的正常页面。
      Content-Length 表示内容长度。只有当浏览器使用持久的HTTP连接时才需要这些数据。如果你想利用长期的联系,您可以将输出文件写入ByteArrayOutputStream,完成后查看其大小,然后将值放在“内容长度”头上,最后通过byteArrayStream.WriteTo(response.getOutputStream()发送内容。
      Content-Type 指示文件的MIME类型。Servlet默认为text/plain,但通常需要明确指定为 text/html。由于经常需要设置内容类型,HttpServletResponse因此提供了一个特殊的方法setContentType。
      Date 当前GMT时间.您可以使用setDateHeader设置这个标题,以避免转换时间格式的麻烦。
      Expires 该文件应该什么时候被认为已经过时,因此不再存档?
      Last-Modified 最后一次文件更改.客户可提供一个日期,提供“如果-修改-自”请求标题,申请将被视为有条件的GET,只将返回更改时间较指定时间晚的文件,否则返回一个304(Not Modified)状态。最后修改也可以使用setDateHeader方法设置。
      Location 指示客户端应该去何处检索文档。 位置通常不是直接设置的,而是通过HTTP ServletResponse sendRedirect 方法,同时设置状态代码为 302。
      Refresh 指示浏览器应该更新该文档多久,以秒计。除了更新当前文件外,您可以通过setHeader("Refresh","5; URL=http://host/path")让浏览器阅读指定页面。注意此功能通常通过设置的HTML页面头部区域实现,这是因为,自动更新或重新引导对于不能使用CGI或Servlet的HTML编写者来说非常重要。但是,对瑟夫莱特来说,直接设置刷新头很容易.注意“更新”表示“在N秒后更新此页或访问指定页”,而不是“每N秒浏览这个页面或访问指定的页面”。因此,每次持续更新请求时,发送一次更新头,发送204个状态代码可以阻止浏览器继续更新,使用Refresh项或。注意,更新头条不属于HTTP 1.1的正式标准的一部分,而是一个扩展,但Netscape和IE都支持它。
      Server 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
      Set-Cookie 设置与页面关联的cookie。Servlet 不应使用 response.setHeader ("Set-Cookie",..),相反,您应该使用HTTPServletResponse提供的特殊方法 addCookie。请参见以下关于Cookie设置的讨论。
      WWW-Authenticate 客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。例如,response.setHeader(“WWW-Authenticate”, “BASIC realm=\“executives\””)。注意,Servlet一般不处理这一问题,相反,网络服务器有专门的机制来控制访问密码保护的页面(例如htaccess)。

      响应头演示

      例如 curl https://ww.Baidu.com -i也可以查看服务器访问URL后返回的HTTP响应头条,如下所示:

      此时脱离了浏览器来获取服务器响应和HTML数据,你可以发现,就某些方面而言,浏览器在HTTP协议方面只不过多了HTML渲染功能,让用户看到更直观的界面。

      HTTP content-type

      Content-Type(内容类型),一般指在网页中存在的内容类型,定义网络文件类型和网页编码,确定浏览器将读取该文件的格式和编码,这就是为什么你经常看到一些PHP网页点击和下载文件或图片。

      Content-Type 标头告诉客户端实际返回的内容的内容类型。

      语法格式:

      常见的媒体格式类型如下:

      • text/html:HTML格式
      • text/plain :纯文本格式
      • text/xml:XML格式
      • image/gif:gif图像格式
      • 图片/jpeg :jpg 图片格式
      • image/png:png图像格式

      与应用程序开始的媒体格式类型:

      • application/xhtml+xml:XHTML格式
      • application/xml:XML数据格式
      • Application/atom+xml :Atom XML 收敛表格
      • application/json:JSON数据格式
      • 申请/pdf:pdf格式
      • application/msword : Word文档格式
      • application/octet-stream:二进制流数据(作为普通文件下载)
      • application/x-www-form-urlencoded : < form encType=“” >中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

      在上传文件时使用另一个常见的媒体格式:

      • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29526.html

          热门文章

          文章分类