首页 > 其他分享 >http协议

http协议

时间:2024-10-16 11:43:17浏览次数:9  
标签:协议 HTTP 请求 Content 响应 http Type 资源

定义

HTTP 是一种用作获取诸如 HTML 文档这类资源的协议。它是 Web 上进行任何数据交换的基础,同时,也是一种客户端—服务器(client-server)协议,也就是说,请求是由接受方——通常是 Web 浏览器——发起的。完整网页文档通常由文本、布局描述、图片、视频、脚本等资源构成。

来自HTTP 概述 - HTTP | MDN (mozilla.org)

http 报文

分为请求响应两种类型

请求

一旦连接建立,用户代理就可以发送请求(用户代理通常是 Web 浏览器,但也可以是其他的,例如爬虫)。客户端请求由一系列文本指令组成,并使用 CRLF 分隔(回车,然后是换行)

image-20241016114926607

请求由以下元素组成:

  • HTTP 方法,通常是由一个动词,像 GETPOST 等,或者一个名词,像 OPTIONSHEAD 等,来定义客户端执行的动作。典型场景有:客户端意图获取某个资源(使用 GET);发送 HTML 表单的参数值(使用 POST);以及其他情况下需要的那些其他操作。
  • 要获取的那个资源的路径——去除了当前上下文中显而易见的信息之后的 URL,比如说,它不包括协议http://)、域名(这里是 developer.mozilla.org),或是 TCP 的端口(这里是 80)。
  • HTTP 协议版本号。
  • 为服务端表达其他信息的可选标头
  • 请求体(body),类似于响应中的请求体,一些像 POST 这样的方法,请求体内包含需要了发送的资源。

请求方法

HTTP 定义了一组请求方法用来指定对目标资源的行为。它们一般是名词,但这些请求方法有时会被叫做 HTTP 动词。最常用的请求方法是 GETPOST

  • GET 方法请求指定的资源。GET 请求应该只被用于获取数据。
  • POST 方法向服务器发送数据,因此会改变服务器状态。这个方法常在 HTML 表单中使用。

响应

当收到用户代理发送的请求后,Web 服务器就会处理它,并最终送回一个响应。与客户端请求很类似,服务器响应由一系列文本指令组成,并使用 CRLF 分隔

image-20241016114940711

响应报文包含了下面的元素:

  • HTTP 协议版本号。
  • 状态码,来指明对应请求已成功执行与否,以及不成功时相应的原因。
  • 状态信息,这个信息是一个不权威、简短的状态码描述。
  • HTTP 标头,与请求标头类似。
  • 可选项,一个包含了被获取资源的主体。

响应示例

成功的网页响应:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 55743
Connection: keep-alive
Cache-Control: s-maxage=300, public, max-age=0
Content-Language: en-US
Date: Thu, 06 Dec 2018 17:37:18 GMT
ETag: "2e77ad1dc6ab0b53a2996dfd4653c1c3"
Server: meinheld/0.6.1
Strict-Transport-Security: max-age=63072000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Vary: Accept-Encoding,Cookie
Age: 7

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>A simple webpage</title>
</head>
<body>
  <h1>Simple HTML webpage</h1>
  <p>Hello, world!</p>
</body>
</html>

请求资源已被永久移动的网页响应:

HTTP/1.1 301 Moved Permanently
Server: Apache/2.4.37 (Red Hat)
Content-Type: text/html; charset=utf-8
Date: Thu, 06 Dec 2018 17:33:08 GMT
Location: https://developer.mozilla.org/ (目标资源的新地址,服务器期望用户代理去访问它)
Keep-Alive: timeout=15, max=98
Accept-Ranges: bytes
Via: Moz-Cache-zlb05
Connection: Keep-Alive
Content-Length: 325 (如果用户代理无法转到新地址,就显示一个默认页面)

<!DOCTYPE html>… (包含一个网站自定义页面,帮助用户找到丢失的资源)

请求资源不存在的网页响应:

HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8
Content-Length: 38217
Connection: keep-alive
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-Language: en-US
Date: Thu, 06 Dec 2018 17:35:13 GMT
Expires: Thu, 06 Dec 2018 17:35:13 GMT
Server: meinheld/0.6.1
Strict-Transport-Security: max-age=63072000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Vary: Accept-Encoding,Cookie
X-Cache: Error from cloudfront
<!DOCTYPE html>… (包含一个站点自定义 404 页面,帮助用户找到丢失的资源)

标签:协议,HTTP,请求,Content,响应,http,Type,资源
From: https://www.cnblogs.com/r0xy/p/18469549

相关文章

  • TCP和UDP协议
    既然能查到这篇文件那说明你还是一个网路小白,本片文章会对TCP和UDP做基本介绍、优缺点对比、以及适用的场景相信读完这篇你会对TCP和UDP有充分的了解。TCP和UDP简介如果把网络模型简单划分成四层,应用层首先把数据交给传输层,传输层的传输则是基于网线或者其他介质完成的,传输层实......
  • HttpUtility.UrlEncode和Uri.EscapeDataString的区别V2024
    HttpUtility.UrlEncode和Uri.EscapeDataString的区别 先上代码: usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Web;namespaceConsoleUrlEncode{classProgram{......
  • ETAS ISOLAR-A/B配置CAN协议栈
    ETAS参考博世是研发需求为AUTOSAR平台提供了工具链,受到不是主机厂和Tire1的追捧,进行快速的平台开发和移植,本文一起分享BSW-CAN协议栈开发。1导入DBC解析CAN协议栈在IsolarA/B新建工程后,完成dbc和arxml的导入,系统上层的SWC和基本类型都有了,需要对工程BSW进行配置1.1OSOS......
  • 【网络原理大花园】https 加密技术的深度解析,让你透彻理解, 建议收藏 ~ ~ ~
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • DAY50WEB 攻防-PHP 应用&文件包含&LFI&RFI&伪协议编码算法&无文件利用&黑白盒
    知识点:1、文件包含-原理&分类&危害-LFI&RFI2、文件包含-利用-黑白盒&无文件&伪协议文件包含-原理&分类&利用&修复原理:程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。在包含文......
  • Recaptcha3 协议识别 API 对接说明
    Recaptcha3协议识别API对接说明本文将介绍一种Recaptcha3协议识别API对接说明,它可让用户无需识别和点选Recaptcha3验证码图片,仅需通过提交WebsiteKey即可实现后台自动解码,完成验证。接下来介绍下Recaptcha3协议识别API的对接说明。注册链接点击链接注册......
  • MQTTnet.Server同时支持mqtt及websocket协议
    Net6后写法 Net6前写法Program.csusingMicrosoft.AspNetCore.Hosting;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.Hosting;usingMQTTnet.AspNetCore;usingSystem;usingSystem.IO;namespaceMQTTnet.Server{publicclassProgra......
  • python使用http代理:实用的实践指南
    在Python中使用HTTP代理的实用指南在网络编程中,HTTP代理是一个非常有用的工具,能够帮助我们隐藏真实IP以及提高网络请求的灵活性。Python作为一门强大的编程语言,提供了多种方式来使用HTTP代理。接下来,我们将详细介绍如何在Python中使用HTTP代理,包括基本的设置和实际应用。什么......
  • Solon 3.0 新特性:HttpUtils 了解一下
    Solon3.0引入一个叫HttpUtils小插件,这是一个简单的同步HTTP客户端,基于URLConnection适配(也支持切换为OkHttp适配)。使得编写HTTP客户端代码更加直观和易于阅读。使用URLConnection适配时(大小为40KB左右)。默认使用OkHttp适配时(大小为3.1MB左右)。当引入okhtt......
  • AXI4协议数据带宽计算
    AXI4协议数据带宽的计算需要考虑总线频率、数据宽度以及传输特性等因素。其计算公式为:最大传输带宽=总线频率×数据宽度×2(单位为bps)1。以下是对该公式的详细解释:总线频率:总线频率是指AXI总线工作的时钟频率,单位通常为赫兹(Hz),比如100MHz、200MHz等。它决定了在......