美文网首页
HTTP 请求

HTTP 请求

作者: dcme | 来源:发表于2016-07-17 00:34 被阅读0次

HTTP 原理

HTTP 是应用层协议,通过 TCP 实现可靠传输,能够保证数据的完整性、正确性。

C/S 架构的交互流程

  1. 客户端执行网络请求,从 URL 解析服务端的主机名
  2. 主机名解析成 IP 地址
  3. 从 URL 解析出端口号
  4. 建立客户端到服务端的 TCP 连接
  5. 客户端通过输出流向服务端发送一条 HTTP 请求
  6. 服务端向客户端回送一条 HTTP 响应报文
  7. 客户端从输入流获取报文
  8. 客户端解析报文,关闭连接
  9. 客户端将结果显示在 UI

HTTP 请求方式

HTTP 常见请求方式有 GET、POST、DELETE、PUT、HEAD、TRACE、OPTIONS。

GET

用来获取服务器中的某个资源

POST

用来向服务器传递数据,比如递交 HTML 表单

PUT

用来向服务器写入资源。有些发布系统允许用户创建 Web 页面,并用 PUT 直接将其传输到 Web 服务器上

DELETE

用来请服务器删除 URL 所指定的资源。但是,客户端应用程序无法保证删除操作一定会被执行。因为,HTTP 规范允许服务器在不通知客户端的情况下撤销请求

HEAD

与 GET 方法行为类型,但是服务器在响应中只返回首部。不会返回实体的主体部分。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查。

TRACE

TRACE 方法允许客户端在最终将请求发送给服务器时,看看它变成什么样子。TRACE 请求会在目的服务器端发起一个“环回”诊断。行程最后一站的服务器会弹回一条 TRACE 响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间 HTTP 应用程序组成的请求/响应链上,原始报文是否以及如何被毁坏或修改过。

OPTIONS

OPTIONS 方法请求 Web 服务器告知其支持的各种功能。可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法(有些服务器可能只支持对一些特殊类型对象使用特定的操作)。这为客户端应用程序提供了一种手段,使其不用实际访问那些资源就能判定访问各种资源的最优方式。

HTTP 报文格式解析

HTTP 请求报文由请求行(request line)、请求头部(header)、空行和请求数据 4 个部分组成。

|请求方法 | 空格 | URL | 空格 | HTTP 版本 | 回车符 | 换行符 |
| ----------头部字段名:值 --------- | 回车符 | 换行符 |
|------回车符 -----------|------- 换行符---------- |
|-------------------请求数据-------------------- |

1.起始行
报文的第一行就是起始行,在请求报文中用来说明要以什么方式做什么请求,而在响应报文中粗略说明了报文的执行结果。

2.首部字段
起始行后面有零个或者多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(如 Connection:Keep-Alive)来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。

3.主体
首部字段的空行之后就是可选的报文主体,其中包含了所有类型的数据。请求主体中包括了要发给 Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是结构化的文本形式,而主体可以包含任意的二进制数据(如图片、视频、音轨、软件程序)。当然,主体中也可以包含文本。

响应报文

HTTP 响应也由 3 个部分组成,分别是:状态行、消息报头、响应正文。

<状态行>
<响应报文 header>
<空行>
[响应报文内容]

在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明请求的资源情况。

状态行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

其中,HTTP-Version 表示服务器 HTTP 协议的版本;Status-Code 表示服务器发回的响应状态代码;Reason-Phrase 表示状态代码的文本描述。状态代码由 3 位数字组成,第一个数字定义了响应的类别,有 5 中可能取值。

取值范围 含义
100-199 指示信息-表示请求已经接收,继续处理
200-299 请求成功。表示请求已经被成功接收、理解
300-399 重定向。要完成请求必须做进一步操作
400-499 客户端错误。请求有语法错误或请求无法实现
500-599 服务器端错误。服务器未能实现合法请求

常见状态代码

代码 状态 说明
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发生不可预期错误
503 Server Unavailable 服务器当前不能处理客户端的请求

相关文章

  • 【HTTP】HTTP请求

    1、HTTP协议通信流程: 2、HTTP请求包含内容 一个HTTP请求报文由请求行(request line)、请...

  • 动脑学院架构篇-HTTP请求、响应报文格式

    【HTTP】HTTP请求、响应报文格式 HTTP请求报文格式: HTTP请求报文主要由请求行、请求头部、请求数据3...

  • IDEA自带http请求工具

    编辑http请求文件(文件名后缀为.http) GET请求 POST请求 执行http请求 查看http结果

  • HTTP

    HTTP简介 HTTP请求格式 HTTP规定,HTTP请求由如下3部分构成 请求方法、URI和HTTP的版本 请求...

  • HTTP协议报文及Chrome Network常用功能

    HTTP协议报文 Http协议报文分为【Http请求报文】和【Http响应报文】 HTTP请求报文 Http请求报...

  • HTTP 请求

    Code=-999 错误400 ------参数错误网络请求出现Code=-1022

  • http请求

    Request 请求行。 Method+URL+Version 请求头。 字段名+字段值----+请求内容 R...

  • http请求

    ajax原生 angular rxjs

  • http 请求

  • Http请求

    首先让我们从一个问题入手,当我们在浏览器中输入http://www.baidu.com/访问百度的时候浏览器做了哪...

网友评论

      本文标题:HTTP 请求

      本文链接:https://www.haomeiwen.com/subject/ftvujttx.html