前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java开发HTTP协议:HTTP协议的方法详解

java开发HTTP协议:HTTP协议的方法详解

作者头像
望月从良
发布2020-05-07 14:56:15
7330
发布2020-05-07 14:56:15
举报
文章被收录于专栏:Coding迪斯尼Coding迪斯尼

如图所示,HTTP请求数据包第一行第一个单词具有重要意义:

第一行第一个单词是”GET”,客户端会根据对服务器的请求来指定该单词,因此第一行第一个单词被称为HTTP协议的方法。客户端发送给服务器的请求数据包,第一个单词永远作为该请求的“方法”。通常情况下,客户端通知服务器采取某种操作并将操作的结果返回给它都被称为命令,只有在HTTP协议下被称为方法,因此HTTP协议的方法与其他协议所说的命令并没有本质区别。之所以使用“方法”是因为HTTP协议为了实现其通用性和灵活性,借鉴了面向对象编程的思维。有编程经验的朋友都知道,某个类导出的接口称为该类的方法,HTTP协议把数据包看做一个类的实例,因此实例里面封装了各种属性,也就是前面章节描述的header,该实例发送给服务器后导致给定的方法或接口被调用,因此HTTP借用面向对象编程的思维来设计其数据包,这也是HTTP协议为何如此通用和灵活的重要原因。

所有方法对应的单词都必须大写,在HTTP协议中主要有三种方法。第一种就是现在看到的GET,它要求服务器将URI指定的资源返回给客户端,URI就是跟在方法对应单词后面的字符串,以上面图片为例就是”/pingjs/ext2020/…”这一句。GET方法在HTTP协议中使用最为广泛,在我们通过浏览器打开特定网页时,浏览器作为客户端向服务器发送GET方法数据包从而获得对应网页的HTML数据。

当服务器接收到GET数据包后,它检测对应URI是否有效,有效的话就根据URI的指引将数据返回给客户端。需要注意的是服务器对GET请求的执行受到header部分信息的影响,如果header部分包含例如If-Modified-Sinced,If-Match等字段,那么服务器就会检验当前条件是否满足字段的要求以便决定是否将数据返回给客户端。这种受到header自动影响的GET请求也称为条件化GET请求。如果请求的文件很大,那么客户端会在GET请求中包含一个Range字段用于告诉客户端返回文件指定部分。

第二个常用方法叫HEAD,它与GET类似,但是要求服务器不要返回请求文件的所有数据而是把文件头部数据返回即可。客户端使用该方法目的往往不在于获取文件数据,而在于确认文件是否存在,或是确认文件的状态,大小等相关信息。

第三种常用方法叫POST,它的作用是让客户端将数据提交给服务器。我们往往会通过网页填写表格,例如在登陆时填写用户名和密码,或者通过网页登记个人信息时,你会在网页上填写姓名,性别等相关数据,填写完后你点击“登陆”或是“提交”,那么相关信息就会给浏览器以POST的方法提交给服务器进行认证或存储,例如像下面表格的信息,当在方框中填写完点击“登陆”后,所填写的信息就会被POST到服务器上。

接下来的几种方法比较少用但也值得我们掌握。第四种方法叫OPTIONS,它被客户端用来向服务器询问对方所支持的沟通方式。如果在OPTIONS方法后面跟着一个URI,那么客户端的目的不是请求服务器返回指定文件而是像服务器询问获取文件信息的途径,此时服务器有可能返回一个新的主机IP让客户端去重新请求,如果后面跟着“*”符号,这意味着客户端在向服务器查询服务器当前的相关信息,服务器会返回详细信息告诉客户端如何获取存储在服务器上的资源。

第五种方法叫PUT。这个方法与POST很像,它也是客户端用于向服务器传递信息,两者的区别在于POST会要求服务器的特定程序来处理提交的信息,例如POST数据包中常常指定存储在服务器上的一个php文件,当数据抵达服务器后,服务器会执行指定的php文件中的代码,然后将受到的信息交给php代码去做处理,而PUT则要求服务器直接将接收的数据存储在指定位置,我们也可以认为PUT与GET相对应,GET是获取服务器的指定文件,PUT是将文件提交给服务器。通常情况下,允许客户端直接将文件存储在服务器上会造成严重的安全隐患,因此PUT方法很少使用,更多的是使用POST方法,因为这样服务器能运行特定程序对客户端提交的信息进行审查从而防止恶意信息被传递到服务器上。

第六种方法叫DELETE,它对应客户端要求服务器删除指定文件,由于该方法涉及到服务器系统的安全,因此很少被允许使用。第七种方法叫TRACE,它允许客户端返回客户端以前发给服务器的请求信息,该方法通常用于服务器的调试。除了这几种主要方法外,HTTP1.1还保留了CONNECT方法用于以后使用。

我们可以看到客户端使用的方法会对服务器的安全产生重要影响。因此所有方法可以分为两大类,第一类叫“安全”方法,这种请求使得服务器的管理员不会感觉服务器的运行受到威胁,这类方法对应GET, OPTIONS, TRACE,第二种叫“危险”方法,任何让客户端将数据提交给服务器的方法都属于此类,也就是POST,PUT,DELETE.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coding迪斯尼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档