HTTP介绍(二)
在此前发布的文章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 / 1.1 200 OK,指示客户端的请求成功)
响应首部字段(例如,Content-Type:text / html)
空行
可选消息正文
状态行和其他标题字段必须全部以 结尾。空行只能包含 ,不能包含其他空格。对于 的这一严格要求在消息正文中有所放松,以统一使用其他系统换行符,例如或。
状态码
在HTTP / 1.0及更高版本中,HTTP响应的第一行称为状态行,并包括数字状态代码(例如“ 404 ”)和文本原因短语(例如“Not Found”)。用户代理处理响应的方式主要取决于代码,其次取决于其他响应首部字段。可以使用自定义状态代码,因为如果用户代理遇到无法识别的代码,则可以使用该代码的第一位来确定响应的一般类别。
标准原因短语仅是建议,并且可以由Web开发人员酌情将其替换为“本地等效项” 。如果状态代码指示问题,则用户代理可以向用户显示原因短语,以提供有关问题性质的更多信息。该标准还允许用户代理尝试解释原因短语,尽管这可能是不明智的,因为该标准明确指定了状态码是机器可读的而原因短语是人类可读的。HTTP状态代码主要分为五组,以更好地说明客户端和服务器之间的请求和响应,状态码的类别:
1XX: 信息性状态码
2XX: 成功状态码
3XX: 重定向状态码
4XX: 客户端错误状态码
5XX: 服务器错误状态码
注:文案部分内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。