HTTP介绍(二)

BitAether
• 阅读 146

在文章HTTP介绍(一) 中,从技术概述、HTTP会话、HTTP认证等方面对HTTP进行介绍。本篇文章将着重介绍HTTP的信息格式和安全方法。

客户端向服务器发送请求,服务器进行响应。

请求消息

该请求消息包含以下内容:

请求行(例如GET /images/logo.png HTTP / 1.1,它请求/images/logo.png从服务器调用的资源)
请求首部字段(例如,Accept-Language:en)
空行
可选消息正文

请求行和其他首部字段均必须以 结尾(即,回车符和换行符)。空行只能包含 ,不能包含其他空格。在HTTP / 1.1协议中,除Host以外的所有首部字段都是可选的。
服务器接受仅包含路径名的请求行,以兼容RFC 1945中的HTTP / 1.0规范之前的HTTP客户端。

请求方法

HTTP定义了方法,来指示要在已标识的资源上执行的所需操作。该资源表示的是现有数据还是动态生成的数据,取决于服务器的实现。通常,资源与服务器上驻留的文件或可执行文件的输出相对应。HTTP / 1.0规范定义了GET,HEAD和POST方法,而HTTP / 1.1规范添加了五个新方法:OPTIONS,PUT,DELETE,TRACE和CONNECT。通过在这些文档中进行指定,它们的语义众所周知并且是可信赖的。任何客户端都可以使用任意方法,并且可以将服务器配置为支持任何方法组合。方法名称区分大小写,与不区分大小写的HTTP首部字段名称相反。

GET

GET方法请求访问已被URI识别的资源。使用GET的请求应仅检索数据,而不进行其它操作。

HEAD

HEAD方法请求与GET请求相同的响应,但不返回报文主体部分。

POST

该POST方法用来传输实体的主体,虽然GET方法可以实现同样的效果,但POST的主要目的并不是获取响应的主要内容。

PUT

PUT方法请求将包含的实体存储在提供的URI下。如果URI引用了已经存在的资源,则对其进行修改;如果URI不指向现有资源,则服务器可以使用该URI创建资源。

DELETE

DELETE方法删除指定的资源。

TRACE

TRACE方法回显此前收到的请求,以便客户端可以看到中间服务器进行了哪些更改(或有任何更改)。用来确认连接过程中发生的一系列操作。

OPTIONS

OPTIONS方法返回服务器针对请求URL指定的资源支持的方法。可以通过请求“*”而不是特定资源来检查Web服务器的功能。

CONNECT

CONNECT方法通常将请求连接转换为TCP / IP隧道,以通过未加密的HTTP代理使用SSL和TLS组合加密通信内容。

PATCH

PATCH方法将部分修改应用于资源。

所有通用HTTP服务器都必须至少实现GET和HEAD方法,并且所有其他方法在规范中都被认为是可选的。

安全方法

按照惯例,某些方法(例如GET,HEAD,OPTIONS和TRACE)被定义为是安全的,这意味着它们仅用于信息检索,不应更改服务器的状态。换句话说,除了相对无害的影响(例如日志记录,Web缓存,横幅广告投放或增加Web计数器)之外,它们不应具有副作用。因此,在不考虑应用程序状态上下文的情况下进行任意GET请求应该被认为是安全的。但是,这不是标准要求的,并且标准也明确承认这一点是无法保证的。

相反,诸如POST,PUT,DELETE和PATCH之类的方法旨在用于可能对服务器造成副作用或诸如财务交易或电子邮件传输之类的外部副作用的操作。因此,符合规定的的网络机器人或网络爬虫通常不使用这类方法。一些不符合要求的人往往会在不考虑上下文或后果的情况下发出请求。

安全性

TRACE方法可以用作称为跨站点跟踪的一类攻击的一部分。因此,通常的安全建议是在服务器配置中将其禁用。 Microsoft IIS支持一种专有的“TRACK”方法,该方法的行为类似,因此建议禁用它。

HTTP介绍(二)

回复消息

响应消息包含以下内容:

状态行,其中包含状态代码和原因信息(例如,HTTP / 1.1 200 OK,指示客户端的请求成功)
响应首部字段(例如,Content-Type:text / html)
空行
可选消息正文

状态行和其他标题字段必须全部以 结尾。空行只能包含 ,不能包含其他空格。对于 的这一严格要求在消息正文中有所放松,以统一使用其他系统换行符,例如或。

状态码

在HTTP / 1.0及更高版本中,HTTP响应的第一行称为状态行,并包括数字状态代码(例如“ 404 ”)和文本原因短语(例如“Not Found”)。用户代理处理响应的方式主要取决于代码,其次取决于其他响应首部字段。可以使用自定义状态代码,因为如果用户代理遇到无法识别的代码,则可以使用该代码的第一位来确定响应的一般类别。

标准原因短语仅是建议,并且可以由Web开发人员酌情将其替换为“本地等效项” 。如果状态代码指示问题,则用户代理可以向用户显示原因短语,以提供有关问题性质的更多信息。该标准还允许用户代理尝试解释原因短语,尽管这可能是不明智的,因为该标准明确指定了状态码是机器可读的而原因短语是人类可读的。HTTP状态代码主要分为五组,以更好地说明客户端和服务器之间的请求和响应,状态码的类别:

1XX: 信息性状态码
2XX: 成功状态码
3XX: 重定向状态码
4XX: 客户端错误状态码
5XX: 服务器错误状态码

注:文案部分内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。

点赞
收藏
评论区
推荐文章
liam liam
2年前
PUT和POST的区别
PUT和POST是HTTP协议中两种常用的请求方法。它们有些相似之处,但也有一些重要的区别。在本文中,我们将详细介绍PUT和POST的区别。PUT请求PUT请求是HTTP协议中的一种请求方法,通常用于更新或替换服务器上的资源。使用PUT请求时,客户端需要将
Wesley13 Wesley13
3年前
RFC1945 超文本传输协议
5.请求(Request)从客户端到服务器端的请求消息包括,消息首行中,对资源的请求方法、资源的标识符及使用的协议。考虑到局限性更大的HTTP/0.9的向后兼容问题,有两种合法的HTTP请求格式:RequestSimpleRequest|FullRequest
Stella981 Stella981
3年前
HTTP协议与WebSocket协议对比
1.HTTP从根本上讲,HTTP还是半双工的协议,也就是说,在同一时刻流量只能单向流动:客户端向服务器发送请求(单向),然后服务器响应请求(单向)。2.WebSocketWebSocket是一种自然的全双工、双向、单套接字连接。使用WebSocket,一旦建立连接,服务器与客户端可以随时发送消息。与HTTP轮询不同,WebSocket只发有一个请
Wesley13 Wesley13
3年前
HTTP基础学习之请求行与状态行
HTTP请求行的格式:请求方式 资源路径 HTTP版本号HTTP状态行的格式:HTTP版本号 状态码  原因叙述下面给出一个完整的例子:     服务器:本地tomcat服务    请求行:GET/test.htmlHTTP/1.0(请求服务器根目录下的test.html文件)    状态行:HTTP/1.120
Stella981 Stella981
3年前
JMeter基础:请求参数Parameters 、Body Data的区别
使用Jmeter测试时,很多人不知道请求参数Parameters、BodyData的区别和用途,这里简单介绍下先了解一个接口的基本概念在客户机和服务器之间进行请求响应时,HTTP协议中包括GET和POST两种基本的请求方法,概念上两者的区别是:get:从指定的资源请求数据。post:向指定的资源提交要被处理的数据最直观的表现就是
Stella981 Stella981
3年前
Django_初识
HTTP协议超文本传输协议(应用层的,基于tcp\ip协议的)特点:无状态,无连接(短连接)请求消息格式:请求行\请求头部\空行\请求数据请求行:GET路径HTTP/1.1响应消息格式:响应行\响应头部\空行\响应数据响应行:HTTP/1.1状态码状态
Wesley13 Wesley13
3年前
HTTP状态码
消息(1字头)这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。100Continue客户端应当继续发送请求。这个临时响应是
Wesley13 Wesley13
3年前
Java Web学习总结(7)——HttpServletRequest对象
一、HttpServletRequest介绍  HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。二、Request常用方法
Wesley13 Wesley13
3年前
HTTP—请求和响应消息的结构
HTTP消息结构HTTP请求消息和响应消息具有相似的结构,由以下部分组成︰1.startline:一行起始行用于描迹要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。2.\\HTTPheaders:\\一个可选的HTTP头集合指明请求或描迹消息正文。3.emptyline:一个空行
Wesley13 Wesley13
3年前
HTTP协议的头信息详解
HTTP协议的头信息详解HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。
Python中User-Agent的重要作用及实际应用
摘要:UserAgent是HTTP协议中的一个重要字段,用于标识发送请求的客户端信息。在Python中,UserAgent的作用至关重要,它可以影响网络请求的结果和服务器端的响应。将介绍UserAgent在Python中的重要作用,并结合实际案例展示其应用