HTTP方法

HTTP报文中包含了方法,指的是客户端希望服务器对资源执行的动作,是一个单独的词,比如GET,POST,OPTIONS等,本文将会介绍主流的几种方法。

安全方法

HTTP定义了安全方法,GET方法和HEAD方法都是安全方法,使用GET方法和HEAD方法的HTTP请求在服务器不会产生动作,这意味着HTTP请求不会再服务器上产生什么结果。

安全方法并不一定是什么动作都不执行的,在实际开发中Web开发者来控制安全方法。使用安全方法的目的就是当使用可能引发某一动作的不安全方法时,允许HTTP应用程序开发者通知用户。

GET

GET时最常用的方法。通常用于请求服务器发送某个资源。HTTP/1.1规范要求服务器实现此方法。

HEAD方法与GET方法的行为类似,但服务器在响应中只返回首部,不会返回实体的主体部分。这允许客户端在为获取实际资源的情况下,最资源的首部进行检查。

通常HEAD方法被用作:

  • 在不获取资源的情况下了解资源的情况
  • 通过查看响应中的状态码,看看某个对象是否存在
  • 通过查看首部,测试资源是否被修改

服务器开发者必须确保返回的首部与GET请求返回的首部完全相同。HTTP/1.1规范要求服务器必须实现此方法。

POST

POST方法起初是用来向服务器输入数据的,通常会用它来支持HTML的表单。在表单中填好的数据会被发送给服务器,然后由服务器将其发送到他要去的地方。

TRACE

客户端发起一个请求时,这个请求会穿梭防火墙、代理、网关或者其他应用程序,每个中间节点哦都可能会修改原始的HTTP请求,TRACE方法允许客户端在最终将请求发送给服务器时,看看他变成了什么样子。

OPTIONS

OPTIONS方法请求Web服务器告知其支持的各种功能,可以询问服务器支持哪些方法,或者某些特殊方法的使用对象。

OPTIONS方法为客户端应用程序提供了使其不必实际访问资源就可以提前判定访问资源的最有方式。

PUT

PUT方法也会像服务器写入资源,PUT让服务器用请求的主体部分来创建一个URL命名的新资源,如果这个资源已经存在的话,就用主体部分替换到原来的。

DELETE

DELETE方法就是请服务器删除请求URL所指定的资源,但是,客户端应用程序无法保证删除操作一定会被执行,因为HTTP规范允许服务器在不通知客户端的情况下撤销请求。

扩展方法

HTTP被设计成字段可以扩展的,这样新的特性就不会时老的软件失效了。扩展方法值得就是没有在HTTP规范中定义的方法。服务器会为他所管理的资源实现一些HTTP服务,这些方法为开发者提供了一种扩展这些HTTP服务能力的手段。

一些常见的扩展方法

方法 描述
LOCK 允许用户“锁定”资源,可以防止别人同时对资源进行修改
COPY 允许直接在服务器上复制资源
MOVE 允许直接在服务器上移动资源

需要注意的时,并不是所有的扩展方法都被定义在正式规范中,如果你定义了一个扩展方法,很可能大部分的HTTP应用程序都无法理解,同样的,你的HTTP应用程序也会遇到一些其他程序定义的扩展方法。所以我们应该对扩展方法宽容尽量一些,如果能够保证不破坏端到端行为的情况下,可以将未知的扩展方法进行传递,如果存在可能劈坏端到端行为的情况,应该返回501 Not Implemented(未实现)状态码。

发布时间:2024-04-21

其他阅读

Nginx重定向HTTP到HTTPS

HTTP协议以纯文本形式进行数据的交互,数据明文传输,容易被监听,窃取和伪造,HTTPS在HTTP的基础上,使用了TLS/SSL对通信过程进行加密,数据得到了有效的保护,就算被拦截到也无法获取信息,更没法实施中间人攻击。本文将会介绍如何在Nginx中配置HTTP重定向到HTTPS。

C#扩展方法

一般来说,当我们使用某个类时,需要用到一些特别的方法,但却没有时。一般做法可能是创建一个基于该类的派生类,添加我们想要的方法,但这样做无疑增加了复杂度。所以这时候,扩展方法出现了。

Apple中的模糊效果

本文主要介绍在前端里比较重要的一个效果——高斯模糊效果,也有人称为毛玻璃特效。在Mac和Windows系统样式上也都在使用模糊效果。下面聚焦于Web前端中的模糊效果开发。

浅析web前端中的MVC模式

MVC是常见的软件架构设计模式,它通过分离关注点改进代码的组织方式。区别于软件设计模式,只是为了解决问题总结出的抽象方法,一种架构模式种往往会用到多种设计模式。

使用中间件记录网站访问日志记录

对于网站访问日志的记录,一般情况下都是使用现有的日志服务,比如谷歌分析引入轻量 js 文件即可。本文主要介绍对于现有的 Asp.Net Core 网站使用中间件快速记录访问日志。使用中间件的好处:在服务端进行处理,无视客户端类型(特殊信息无法获取);统一处理,不需要对每个地址重复处理等。