在互联网已经渗透了生产、生活各个角落的今天,人们可以登录微信语音聊天,可以随手“扫”到各种功能的二维码,可以通过方便快捷的无人超市购物……这种互联网领域的跨越式发展,不仅满足了人们生活中各种各样的需求,也催生了一个个新兴领域的诞生,为经济增长注入了强劲动力。

上网的过程,其实是浏览器向服务端发送请求,之后将服务端主机上的内容显示到本地的一个流程。而浏览器与服务器之间的请求走的就是 HTTP 协议。

自 1990 年以来,超文本传输协议(HTTP) 就成为了互联网数据通信的基础,它是分布式协作超媒体信息系统的应用层协议,是一种通用的无状态协议。具体来讲就是让服务器不保留与客户交易时的任何状态,由客户端单方面向服务器发送请求数据。

HTTP 主要有 0.9、1.0、1.1、2.0 版本,其中 1.1 版本定义了 9 种 Method(方法),分别是:

这些方法中,最常见的便是 GET 和 POST,但是可能很少有人关注两者都有什么作用,我们一起来看一看吧。

GET vs POST Method

GET 和 POST 都是 HTTP 协定的一种请求标准,同样基于 TCP 传输层协议。两者主要区别在存放数据的方式不同,进而造成的传输量、安全性等差异。

GET

我们先来看一下 GET 是怎么传送信息的:

<form method="get" action="">
<input type="text" name="id" />
<input type="submit" />
</form>

如上完成代码点击“提交”之后,浏览器的网址就会变成 http://www.a.com/a.html?id=11111,浏览器会自动将表单内容转为 Query String 加在 URL 后面进行请求。这样,从浏览器的网址里就可以看见表单要传送的资料。

POST

接下来我们看看 POST 的传送:

<form method="post" action="">
<input type="text" name="id" />
<input type="submit" />
</form>

提交之后,地址并无变化,但是通过查看 HTTP Request 的内容可以发现,POST 是将表单资料放在 Message Body 进行传送。

看不太懂代码的小伙伴也不要着急,我们以现实生活中寄信的机制来举例。如果说信封的撰写格式是 HTTP,我们可以将信封外的内容称为 Http-Header,信封内的书信称为 Message Body。 HTTP Method 就是你要告诉邮差的寄信规则。

而假设 GET 就如同明信片一样将要传递的信息写在信封(Http-Header)上,是信封内不装信件的寄送方式,是直接将要传送的信息以 Query String(一种 Key/Vaule 的编码方式)的形式加在地址(URL)后面进行传送。那 POST 就是信封内装有信件的寄送方式,不但信封可以写东西,信封内(Message Body)还可以放入你想要寄送的其他资料,之后由邮差进行传送。

GET VS POST

总体来说,两种请求方式有如下区别:

**- 传递参数方式:**GET 是将参数写在 URL 中 ? 的后面,并用 & 分隔不同参数;而 POST 是将信息存放在 Message Body 中传送。

**- 传输资料量限制:**HTTP 协定本身没有限制 URL 及正文长度,多半是浏览器为了避免过长的 URL 消耗过多的资源而限制长度;而以 POST 请求通常都没有内容长度限制的问题。

**- 安全性问题:**GET 请求方式从浏览器的 URL 地址就可以看到参数;但无论是 GET 还是 POST 其实都是不安全的,因为 HTTP 协定是明文传输,只要拦截封包便能轻易获取重要资讯。想要安全传输资料,必须使用 SSL/TLS来加密封包,也就是 HTTPS。

除了我们较为常见的 GET 和 POST 两种请求方式,现在其他请求方式也越来越多的被使用。例如又拍云基于 RESTful 架构的 REST API 中,除了使用 GET 获取文件外,也会使用 PUT 来上传文件,DELETE 用来删除文件,HEAD 用来获取文件信息,使用 PATCH 来修改文件 Metadata 信息等等。

请求与状态码

当然,上面讲的请求方式虽然很常见,但是如果不是稍微有些了解或者对互联网有些关注的小伙伴,可能并不会注意到。但是我们接下来说的肯定是大家都有见过的。毕竟在我们使用网页浏览内容的过程中肯定,有见到过例如:404 NOT FOUND、504 TIME OUT,这类的提示。其实这个是 HTTP 的状态码。

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两位不具有任何分类作用。当用户访问一个网页时,用户的浏览器会向网页所在服务器发出请求。在浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(Header)用以响应浏览器的请求。而这个状态码则可以帮助我们粗略的判断请求结果或错误原因。

HTTP 状态码共分为 5 种类型:

一直在使用又拍云 CDN 的小伙伴儿对一些常见的状态码肯定很熟悉。比如,网站访问成功请求会返回 200;开启了强制 HTTPS,会返回 301;如果开启了防盗链被拦截,则是返回 403 等等。

在这些常规的状态码下,又拍云还进行了进一步的封装,让我们可以通过查询又拍云错误码表的方式获得更为准确的网站报错原因。

{“code”:“40310013”,“msg”:“invalid user token.”}

查询错误码表得知,触发了 Token 防盗链规

讲了这么多,是不是对 HTTP 请求有了更近一步的了解?当然了,HTTP 协议不仅仅于此,有兴趣的小伙伴儿们要持续关注哦~

聊聊 HTTP 常见的请求方式相关推荐

  1. Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求

    Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明:本 ...

  2. 爬虫-05-http常见的请求方式与状态码

    两种常见的请求 get post 常见的状态码 HTTP状态码详解 http://tool.oschina.net/commons?type=5

  3. unity3d中画线有几种方式_Spring RestTemplate中几种常见的请求方式

    原文 https://segmentfault.com/a/1190000011093597 在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了 ...

  4. Spring RestTemplate中几种常见的请求方式

    关注公众号[江南一点雨],专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货! 在Spring Cloud ...

  5. SpringCloud之RestTemplate,几种常见的请求方式

    https://github.com/lenve/SimpleSpringCloud/tree/master/RestTemplate在Spring Cloud中服务的发现与消费一文中,当我们从服务消 ...

  6. Java RestTemplate中几种常见的请求方式

    在REST接口的设计中,利用RestTemplate进行接口测试是种常见的方法.本文主要从以下四个方面来看RestTemplate的使用: GET请求 POST请求 PUT请求 DELETE请求 OK ...

  7. Http请求头+请求方式+状态码

    列举Http请求中常见的请求方式? http请求中的8种请求方法 1.opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能) 2. ...

  8. 菜鸟后端开发之接口请求方式

    开发过程中的接口都会和请求方式打交道,日常开发说简单就是增删改查,但是想要融会贯通难上加难.请求方式用来面对前后交互,常见的有六种. 目录 一.常见六种请求方式 二.Get请求 三.Post请求 四. ...

  9. post 表单中常见的四种表单请求方式

    //post 表单中常见的四种表单请求方式 typedef enum {     postformURLEncoded,                 /*对应Content-Type: appli ...

最新文章

  1. TPU 3.0,Android P...Google带来了哪些惊喜?
  2. python实现Anderson-Darling正态分布检验
  3. 手机通讯录分组名称_基于Aandroid的手机操作系统(7)
  4. legend3---3、lavarel页面post请求错误之后跳转
  5. P3225 [HNOI2012]矿场搭建
  6. java mongodb排序查询_java操作mongodb基础(查询 排序 输出list)
  7. 这7 款 MySQL 客户端工具,用了都说好!
  8. php7 imagick安装,php扩展imagick安装for windows7
  9. 【渝粤题库】国家开放大学2021春1313学前儿童卫生与保健题目
  10. HDU 4027 Can you answer these queries?(线段树/区间不等更新)
  11. VMware vSAN性能测试那点后续的事
  12. iis swagger 部署_asp.net-core – 虚拟目录中的IIS站点Swagger UI端点
  13. 《Linux内核设计与实现》读书笔记(12)--- 内存管理(2)
  14. 习题2.2 数组循环左移(20 分)浙大版《数据结构(第2版)》题目集
  15. 名片设计尺寸及注意事项(详尽),附加:文字转曲线或外框字;网址、文字转二维码方法
  16. python项目实战:天眼查询你所需的公司信息
  17. 微信终于可以发送大文件了!
  18. php更改文件为只读,word只读模式怎么修改
  19. STM32使用大彩屏程序总结(二)
  20. JavaFx笔记二:布局

热门文章

  1. MySQL常用存储引擎之Federated
  2. 【Homework】说出 == 和 equals 的区别
  3. linux删除文件夹提示没找到,Win10中遇到删除文件夹提示找不到该项目的解决过程...
  4. 访问动态页面很慢 PHP,PHP动态网页程序优化及高效提速问题
  5. return和break的区别
  6. MOS管的工作原理及常见的封装(看完必会)
  7. 特朗普承诺改革H-1B签证 留住高技能外国人
  8. 区块链时代的拜占庭容错:Tendermint(五)
  9. Matlab随笔之求解线性方程
  10. Python format() 函数