《二》HTTP 请求报文和响应报文、请求方法、状态码

这篇具有很好参考价值的文章主要介绍了《二》HTTP 请求报文和响应报文、请求方法、状态码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

请求报文和响应报文:

请求报文:

客户端向服务器发送的请求信息,就叫做请求报文。
《二》HTTP 请求报文和响应报文、请求方法、状态码

客户端发送一个 HTTP 请求到服务器,请求信息包含四部分:请求行、请求头、空行、请求体。

  1. 请求行:包含三部分,分别是请求方法、请求资源的路径、协议版本。
  2. 请求头:头信息,告诉服务器一些信息,在客户端和服务器处理时起至关重要作用的信息几乎都在这边。
  3. 空行:请求头和请求体之间有一个空行来做区分,即使没有请求体,空行也不能少。
  4. 请求体:请求要发送的内容,不一定有。

    GET 请求方法没有请求体,数据通过请求头携带。
    POST 请求方法有请求体,数据通过请求体携带。

GET 方式示例:

// 请求行:请求方法是 GET,请求资源的路径是 /0606/01.php,携带的参数是 username=Lee&age=28 ,所用的协议是 HTTP/1.1
GET  /0606/01.php?username=Lee&age=28  HTTP/1.1  
// 请求头:是一行一行的 key-value
Host: localhost
// 空行

POST 方式示例:

// 请求行:请求方法是 POST,请求资源的路径是 /0606/02.php ,所用的协议是 HTTP/1.1
POST  /0606/02.php  HTTP1.1  
// 请求头:Content-type 表明请求体的类型,Content-length 表明请求体的长度
Host: localhost
Content-type: application/x-www-form-urlencoded
Content-length: 19
// 空行

// 请求体
username=Lee&age=28

响应报文:

服务器返回的响应信息,就叫做响应报文。
《二》HTTP 请求报文和响应报文、请求方法、状态码

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个 HTTP 的响应消息。响应信息包含四部分:响应行、响应头、空行、响应体。

  1. 响应行:包含三部分,分别是所用的协议版本、状态码、状态文字。
  2. 响应头:头信息,告诉客户端一些信息,在客户端和服务器处理时起至关重要作用的信息几乎都在这边。
  3. 空行:响应头和响应体之间有一个空行来做区分,即使没有请求体,空行也不能少。
  4. 响应体:响应要返回的内容,不一定有。
// 响应行:所用的协议是HTTP/1.1,状态码是200,状态文字是 OK
HTTP/1.1 200 OK
// 响应头
Date:Thu, 06 Jun 2021 12:39:02 GMT
Server: Apache/2.2.21 <Win32> PHP/5.38
X-Powered-By: PHP/5.38
Content-Length: 5
Content-Type: text/html
// 空行

// 响应体
hello

请求方法:

请求方法用来定义对于资源采取什么样的操作,有各自的语义。分别有:GET、POST、PUT、DELETE、HEAD、CONNECT、OPTIONS、TRACE、PATCH。

这些请求方法虽然有各自的语义,但并不是强制性的。
HTTP 里虽然规定了这些请求方法,但 Web 服务器未必全部支持。

  1. GET:请求服务器中的指定资源。
  2. HEAD:和 GET 基本一致,但是没有响应体。这一方法可以在不传输整个响应体的情况下,获取响应头中的元信息。

    例如:只想知道某个资源是否还存在,而不需要知道具体是什么内容,就可以使用 HEAD,因为此时只需要状态码 200 就可以知道资源仍然存在了。

  3. POST:将数据发送到服务器以创建资源。
  4. PUT:将数据发送到服务器以替换整个资源。
  5. PATCH:将数据发送到服务器以更新部分资源。
  6. DELETE:请求服务器删除指定资源。
  7. TRACE:回显服务器收到的请求,主要用于测试或诊断。

    例如:使用了代理访问 news.163.com,如果想要知道代理有没有偷偷修改我们的 HTTP 请求,就可以使用 TRACE 来测试,news.163.com 的服务器就会把最后收到的请求返回回来。

  8. OPTIONS:返回服务器针对指定资源所支持的 HTTP 请求方法。
  9. CONNECT:建立一个到目标资源的服务器的隧道,通常用在代理服务器上,网页开发很少用到 。

GET 和 POST 的区别:

  1. 语义不同:GET 请求用来获取数据;POST 请求用来创建数据。

  2. 发送数据不同:GET 请求在请求头中携带数据,请求的数据会附在 URL 地址中;POST 请求一般是在请求体中携带数据。

    GET 请求的数据会附在 URL 地址中,以 ? 分割 URL 和传输数据,多个参数用 & 连接。如果数据是英文字母/数字,原样发送,如果是空格,转换为 +,如果是中文/其他字符,则直接把字符串用 BASE64 加密。
    POST 请求也可以在请求头中通过 URL 携带数据,这不是 GET 请求专属的特性。

  3. 传输数据的大小:GET 请求能携带的数据量和 URL 地址的长度有关系,一般最多就几 K;POST 请求能携带的数据量理论上是无限的。但实际上还是有大小限制,但是会比 GET 请求大得多。

  4. 安全性不同:POST 请求的安全性要比 GET 请求的安全性高一点。GET 请求的数据会在地址栏中显示出来;而 POST 请求的数据,不会在地址栏显示出来。

    比如:通过 GET 提交数据,用户名和密码将明文出现在 URL 上,那么(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录都可以看到这些信息。
    但实际上 POST 请求也不安全,打开浏览器的控制台也可以直接看到提交的信息。

HTTP 状态码:

状态码是用来表示服务器的响应情况的。 HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。

状态说明是用来描述状态码的。

HTTP 状态码分类:

  1. 1**:消息,服务器已收到请求,需要继续处理。
  2. 2**:成功,服务器成功收到并处理请求。
  3. 3**:重定向,服务器需要进一步的操作以完成请求。
  4. 4**:客户端错误,请求包含语法错误或无法完成请求。
  5. 5**:服务器错误,服务器在处理请求的过程中发生了错误。

常见的 HTTP 状态码:

  1. 200:客户端请求成功。

  2. 201:POST 请求,新的资源创建成功。

  3. 301:永久移动,请求的资源已被永久的移动到新 URL。

    响应中会返回新的 URL,浏览器拿到新的 URL 会自动跳转。

  4. 302:临时移动,请求的资源已被临时的移动到新 URL。

    例如:通过 POST 方式提交表单数据到 05.php,但是 05.php 重定向了到 06.php,通过 301 和 302 会发生丢失数据的情况。下图可以看到,05.php 是 POST 请求,但是 06.php 变成了 GET 请求。
    《二》HTTP 请求报文和响应报文、请求方法、状态码
    可以通过 307 状态码来解决。下图可以看到,05.php 和 06.php 都是 POST 请求。
    《二》HTTP 请求报文和响应报文、请求方法、状态码

  5. 304:资源未被修改。

    浏览器通过此资源的标识符告诉服务器它有这个资源,且告诉服务器最后的修改时间,服务器对比资源的标识符和最后的修改时间,如果一致,说明没有更改过资源,就会返回 304。浏览器就可以从缓存中获取资源,减轻了服务器的传输压力。

  6. 307:重定向中保持原有的请求数据。

  7. 400:客户端请求的语法错误,服务器无法理解。

  8. 401:未授权的错误,请求必须携带用户的身份信息。

  9. 403:没有访问权限的错误,服务器理解客户端的请求,但是拒绝执行。

  10. 404:无法找到资源。

  11. 500:服务器内部错误,无法完成请求。

  12. 503:由于超载或系统维护,服务器暂时无法处理客户端的请求。文章来源地址https://www.toymoban.com/news/detail-426254.html

常见的 HTTP 状态说明:

  1. OK:客户端请求成功。
  2. Created:POST 请求,新的资源创建成功。
  3. Moved Permanently:永久移动,请求的资源已被永久的移动到新 URL。
  4. Bad Request:客户端请求的语法错误,服务器无法理解。
  5. Unauthorized:未授权的错误,请求必须携带用户的身份信息。
  6. Forbidden:没有访问权限的错误,服务器理解客户端的请求,但是拒绝执行。
  7. Not Found:无法找到资源。
  8. Internal Server Error:服务器内部错误,无法完成请求。
  9. Service Unavailable:由于超载或系统维护,服务器暂时无法处理客户端的请求。

到了这里,关于《二》HTTP 请求报文和响应报文、请求方法、状态码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nodejs基础6之HTTP模块的获取请求行和请求头、获取请求体、获取请求路径和查询字符串、http请求练习、设置HTTP响应报文、http响应练习

    含义 语法 重点掌握 请求方法 request.method * 请求版本 request.httpVersion 请求路径 request.url * URL 路径 require(‘url’).parse(request.url).pathname * URL 查询字符串 require(‘url’).parse(request.url, true).query * 请求头 request.headers * 请求体 request.on(‘data’, function(chunk){}),request.on(‘end’, functio

    2024年02月20日
    浏览(43)
  • http请求和响应(包含状态码)+过滤器

    目录 一、http协议概述 二、http请求 三、http响应  四、过滤器 一、http协议概述 1.http: 超文本传输协议 ,是用于在网络上传输数据的应用层协议。是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程,基于TCP/IP通信协议来传递数据,

    2024年02月06日
    浏览(45)
  • HTTP响应状态码大全:从100到511,全面解析HTTP请求的各种情况

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月12日
    浏览(53)
  • HTTP介绍 原理 消息结构 客户端请求 服务器响应 HTTP状态码

    HTTP协议 是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(www.world wide web)服务器传输超文本到本地浏览器的传送协议 HTTP 是基于TCP/IP(三次握手,四次挥手)通信协议来传输数据(HTML文件,图片文件,查询结果等) TCP:可靠的,丢包重传 UTP:不可靠的,直播,

    2024年02月05日
    浏览(54)
  • react反向代理:http请求状态返回200,控制台预览和响应没有返回值是怎么回事

     今天调试接口的时候遇到这样的情况:         http请求状态返回200,控制台预览和响应没有返回值。如下图所示: 对照之前的请求地址,发现调试的这个请求地址跟原来的请求地址相比较多了一个前缀,再查看proxy代理文件,发现按照原来的请求地址做了反向代理,将

    2024年02月11日
    浏览(66)
  • Http---HTTP响应报文

    1. HTTP响应报文分析 HTTP 响应报文效果图: 响应报文说明: 原始响应报文说明: 说明: 每项数据之间使用: rn 2. HTTP 状态码介绍 HTTP 状态码是 用于表示web服务器响应状态的3位数字代码 。 状态码 说明 200 请求成功 307 重定向 400 错误的请求,请求地址或者参数有误 404 请求资源在服

    2024年03月10日
    浏览(50)
  • 网站建设入门教程||HTTP 请求方法||HTTP 响应头信息

    根据 HTTP 标准,HTTP 请求可以使用多种请求方法。 HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。 序号 方法 描述 1 GET 请求指定的页面信息,并返回实体主体。 2 HEAD 类似于 GET 请求,只不过返回的

    2024年02月12日
    浏览(69)
  • Jmeter提取协议报文、请求头、请求体、响应体

    参看文章: https://blog.csdn.net/qq_40308101/article/details/125545245 https://www.thinbug.com/q/34918343 https://www.cnblogs.com/peak911/p/9238738.html 1、 prev (用于后置处理器、断言) prev 提供对当前取样器结果的访问能力 prev 映射 org.apache.jmeter.samplers 的 SampleResult 类 官方文档: https://jmeter.apache.org/ap

    2024年02月11日
    浏览(35)
  • HTTP发展及常见的HTTP请求方法和状态码

    目录 HTTP的发展 万维网的发明 HTTP/0.9 ——单行协议 HTTP/1.0——构建可扩展性 HTTP/1.1——标准化的协议 HTTP/2——为了更优异的表现 后 HTTP/2 进化 HTTP/3——基于 QUIC 的 HTTP

    2024年02月09日
    浏览(89)
  • WebServer 解析HTTP 响应报文

    一、基础API部分,介绍stat、mmap、iovec、writev、va_list 1.1 stat​  作用 :获取文件信息 返回值:成功返回0,失败返回-1; 参数:文件路径(名),struct stat 类型的结构体  struct stat 结构体详解: stat结构体中的st_mode 则定义了下列数种情况: 1.2 mmap 用于将一个文件或其他对象

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包