首页 > 其他分享 >HTTP学习笔记3-HTTP报文

HTTP学习笔记3-HTTP报文

时间:2023-02-01 15:12:39浏览次数:47  
标签:标头 HTTP 请求 GET 报文 笔记 POST 方法

HTTP 协议主要由三大部分组成:

起始行(start line):描述请求或响应的基本信息;
头部字段(header):使用 key-value 形式更详细地说明报文;
消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。
其中起始行和头部字段并成为 请求头 或者 响应头,统称为 Header消息正文也叫做实体,称为 body。HTTP 协议规定每次发送的报文必须要有 Header,但是可以没有 body,也就是说头信息是必须的,实体信息可以没有。而且在 header 和 body 之间必须要有一个空行(CRLF)
   

每个报文的起始行都是由三个字段组成:方法、URL 字段和 HTTP 版本字段

HTTP 请求方法
HTTP 请求方法一般分为 8 种,它们分别是

GET 获取资源,GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回;

POST 传输实体,虽然 GET 方法也可以传输主体信息,但是便于区分,我们一般不用 GET 传输实体信息,而使用 POST 传输实体信息

PUT 传输文件,PUT 方法用来传输文件。就像 FTP 协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。

但是,鉴于 HTTP 的 PUT 方法自身不带验证机制,任何人都可以上传文件 , 存在安全性问题,因此一般的 W eb 网站不使用该方法。若配合 W eb 应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer,表征状态转移)标准的同类 Web 网站,就可能会开放使用 PUT 方法。

HEAD 获得响应首部,HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。

DELETE 删除文件,DELETE 方法用来删除文件,是与 PUT 相反的方法。DELETE 方法按请求 URI 删除指定的资源。

OPTIONS 询问支持的方法,OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。

TRACE 追踪路径,TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法。

CONNECT 要求用隧道协议连接代理,CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加 密后经网络隧道传输。

我们一般最常用的方法也就是 GET 方法和 POST 方法,其他方法暂时了解即可。下面是 HTTP1.0 和 HTTP1.1 支持的方法清单

GET 和 POST 的区别

GET 和 POST 其实没有本质区别,使用 GET 的场景完全可以使用 POST 代替,使用 POST 的场景一样可以使用 GET 代替。但是在具体的使用上,还是存在一些细节的区别

GET 习惯上会把客户端的数据通过 query string 来传输(body 部分是空的);POST 习惯上会把客户端的数据通过 body 来传输(query string 部分是空的)通俗讲就是前面写的 我们一般不用 GET 传输实体信息,而使用 POST 传输实体信息
GET 习惯上用于从服务器获取数据;POST 习惯上是客户端给服务器提交数据
一般情况,程序员会把 GET 请求的处理,实现成“幂等”的;对于 POST 请求的处理,不要求实现成“幂等”
GET 请求可以被缓存,可以被浏览器保存到收藏夹中;POST 请求不能被缓存
补充: 幂等是什么?

一个 HTTP 方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说,幂等的方法不应该具有副作用。

HTTP标头

什么是HTTP标头?当一个HTTP请求产生,web服务器会提供一个HTTP响应。请求、响应经常携带一些附加信息,这就是HTTP标头(HTTP Headers)

HTTP 1.1的标头分为四种:通用标头,请求标头,响应标头,实体标头。

通用标头主要有三个,分别是 DateCache-Control 和 Connection

请求标头: HostReferer 和 Acceppt

实体标头是描述消息正文内容的 HTTP 标头。实体标头用于 HTTP 请求和响应中。头部Content-Length、 Content-Language、 Content-Encoding 是实体头。

响应标头是可以在 HTTP 响应中使用的 HTTP 标头

一个简单的例子:

Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr

Host 表示的是对象所在的主机。这个首部行提供的信息是 Web 代理高速缓存所需要的。Host 请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的TCP端口号。如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个 HTTP 的 URL 会自动使用80作为端口)

Connection: close 表示的是浏览器需要告诉服务器使用的是非持久连接。它要求服务器在发送完响应的对象后就关闭连接。(持久性连接是Connection: keep-alive)

User-agent: 这是请求头用来告诉 Web 服务器,浏览器使用的类型是 Mozilla/5.0,即 Firefox 浏览器。

Accept-language 告诉 Web 服务器,浏览器想要得到对象的法语版本,前提是服务器需要支持法语类型,否则将会发送服务器的默认版本。

MIME类型

MIME: MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

也就是说,MIME 类型其实就是一系列消息内容类型的集合。那么 MIME 类型都有哪些呢?

文本文件: text/html、text/plain、text/css、application/xhtml+xml、application/xml

图片文件: image/jpeg、image/gif、image/png

视频文件: video/mpeg、video/quicktime

应用程序二进制文件: application/octet-stream、application/zip

标签:标头,HTTP,请求,GET,报文,笔记,POST,方法
From: https://www.cnblogs.com/blogsongjiawei/p/17082721.html

相关文章

  • [网络同步] < 网络同步在游戏历史中的发展变化> 阅读笔记
    最近阅读: 网络同步在游戏历史中的发展变化  https://mp.weixin.qq.com/s/9Nghv8O9HXJFVf6L1m9wpg  学到不少,大致对游戏网络有了大方向的了解,做个记录。 1.帧同步......
  • CC1101RGPR学习笔记:工作原理简单入门
     众所周知,在IOT的市场应用中,从通信协议细分的话,有SUB-1G,2.4G,3G,4G,以及最新推出的5G,虽然5G通信协议已经在崭露头角,但是不同的通信协议在不同的应用领域之中还是占据着一......
  • mormot2 https演示
    mormot2https演示functionTFileServer.StartServer(constpmcPort:RawUtf8;pmMode:THttpServerMode;constpmcCertFileName,pmcPrivKeyFileName:TFileName;co......
  • IIS 配置 HTTPS
    1、导入证书a、开始->运行->MMC,打开MMC  b、文件->添加/删除管理单元c、双击证书,添加d、计算机用户      ......
  • nnU-Net学习笔记(一):论文阅读
    nnU-Net学习笔记(一):论文阅读源码地址:https://github.com/MIC-DKFZ/nnUNet论文:https://arxiv.org/abs/1809.104861.动机:最近的网络修改在特定适用于某些问题(过拟合),......
  • 读Java8函数式编程笔记07_设计和架构的原则
    1. SOLID原则1.1. 开发良好面向对象程序的准则1.2. Liskovsubstitution里氏替换1.3. Interfacesegregation接口隔离1.4. Singleresponsibility单一功能原则1......
  • HttpClient发送https请求忽略SSL证书
    没有忽略时报错javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCe......
  • JMeter笔记1 | JMeter简介及体系结构
    (JMeter笔记1|JMeter简介)1JMeter简介ApacheJMeter是Apache组织基于Java开发的压力测试工具,用于对软件做压力测试;开源的桌面应用软件;可用于测试静态和动态资......
  • HTTP_响应消息_响应头与Response_功能介绍
    HTTP_响应消息_响应头1.响应消息:服务器端发送给客户端的数据数据格式:1.响应行......
  • BrootStrap学习笔记
    BrootStrap学习笔记  col-xs/col-sm/col-md/col-lg/col-xl总结*表示当前div所占的列数(共12列);col-sm-3表示该div在小屏幕中占6列,.col-xs-*column-extrasmal......