HTTP请求的方式

post和get这类常见的请求大家应该都不陌生。
事实上,http有以下几种请求:

  • GET :获取资源
    请求获取由Request-URI所标识的资源,get请求会在URL中显示请求的资源,一般只用于数据的读取
  • POST :传输实体主体
    在Request-URI所标识的资源后附加新的数据
  • PUT :传输文件
    请求服务器存储一个资源,并用Request-URI作为其标识。PUT请求会向指定资源位置上传其最新内容,PUT方法是幂等的方法。通过该方法客户端可以将指定资源的最新数据传送给服务器取代指定的资源的内容
  • DELETE :删除文件
    请求服务器删除由Request-URI所标识的资源。DELETE请求用于请求服务器删除所请求URI(统一资源标识符,Uniform Resource Identifier)所标识的资源。DELETE请求后指定资源会被删除,DELETE方法也是幂等的。
  • HEAD :获得响应报文首部
    请求获取由Request-URI所标识的资源的响应消息报头。HEAD方法与GET方法一样,都是向服务器发出指定资源的请求。但是,服务器在响应HEAD请求时不会回传资源的内容部分,即:响应主体。这样,我们可以不传输全部内容的情况下,就可以获取服务器的响应头信息。HEAD方法常被用于客户端查看服务器的性能。也可用于确认URI的有效性及资源更新的日期时间等。
  • OPTIONS :询问支持的方法
    用来查询针对请求URI指定的资源支持的方法。请求查询服务器的性能,或查询与资源相关的选项和需求。OPTIONS请求与HEAD类似,一般也是用于客户端查看服务器的性能。 这个方法会请求服务器返回该资源所支持的所有HTTP请求方法,该方法会用’*’来代替资源名称,向服务器发送OPTIONS请求,可以测试服务器功能是否正常。JavaScript的XMLHttpRequest对象进行CORS跨域资源共享时,就是使用OPTIONS方法发送嗅探请求,以判断是否有对指定资源的访问权限。
  • TRACE:追踪路径
    请求服务器回送收到的请求信息,主要用于测试或诊断。TRACE请求服务器回显其收到的请求信息该方法主要用于HTTP请求的测试或诊断。客户端通过TRACE方法可以查询发送出去的请求是怎样被加工修改/篡改的。
  • CONNECT:要求用隧道协议连接代理
    能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。

HTTP协议之Get和Post

我们看看GET和POST的区别

  1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.

  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

  3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。

  4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

  5. 多数浏览器对于POST分两个package发送数据,请求头和请求体分开发,即使参数再少再短,也会被分成两个步骤来发送(相对于GET),也就是第一步发送header数据,第二步再发送body部分。HTTP是应用层的协议,而在传输层有些情况TCP会出现两次连结的过程,HTTP协议本身不保存状态信息,一次请求一次响应。对于TCP而言,通信次数越多反而靠性越低,能在一次连结中传输完需要的消息是最可靠的,尽量使用GET请求来减少网络耗时。如果通信时间增加,这段时间客户端与服务器端一直保持连接状态,在服务器侧负载可能会增加,可靠性会下降。

什么情况下会发送options请求

在跨域情况下,当一个请求为非简单请求就会发送options请求

满足以下条件就是一个简单请求:

  • Method: 请求的方法是 GET、POST 及 HEAD
  • Header: 请求头是 Content-Type、Accept-Language、Content-Language 等
  • Content-Type: 请求类型是 application/x-www-form-urlencoded、multipart/form-data 或 text/plain

而在项目中常见的 Content-Type: application/json 及 Authorization:为典型的「非简单请求」,在发送请求时往往会带上 Options

感谢您的阅读,本文由 Astar 版权所有。如若转载,请注明出处:Astar(http://example.com/2020/12/24/http%E8%AF%B7%E6%B1%82%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F/
http状态码
计算机网络基础篇(汇总)