1

post,get这两个HTTP的请求方式,在刚开始接触HTTP协议的时候,我傻傻分不清,那时候还不断吐槽学编程就去学语言啊!为什么还学这种鬼东西哦!

直到我看到了这么一张图:

HTTP小知识

我才明白,原来我们平常的上网过程就是客户端与远程服务端交互的过程啊。

但是这又跟HTTP有什么关系呢?那必然是有关系的啊!

首先我们先来简单了解一下啥叫HTTP。

HTTP是一种超文本传输协议,是一种基于TCP应用层,将服务端的数据传输给客户端的一种协议。

所以我们现在可以知道,平常我们上网获取的图片,文字,视频等数据都是由HTTP协议进行传递的。

讲到这里,也许有同学会问一个问题:

啥是服务端,啥又是客户端啊?

我觉得这是一个好问题,对于小白来说,他们确实不知道啥是客户端,啥是服务端,在这里我也想厚脸皮的说一句,其实我原来也不知道…

所以为了解决小白们的疑惑,我也来简单介绍一下吧。

客户端嘛,是与服务端相对应的词,客户客户,就是一个被服务的对象,所以用一句话来说就是:客户端是产品或者服务所指向的终点。

像上图中的电脑,手机都是客户端,准确的来说,它们内部的应用程序才是客户端,因为这些应用程序都有一个与其相对应的服务端给它们提供服务。

既然初步了解客户端,那么我们也就知道了,向客户端提供服务,保存客户端数据的叫作服务端。

HTTP小知识

2

在了解客户端和服务端后,让我们再次回到客户端与服务端的交互过程中来。

之前说了每一个客户端,都有着与其相对应的服务端。那么我们不得不思考一个问题。

这么多的客户端该如何才能找到与之对应的服务端呢?

在这里不得不说HTTP协议是真的伟大,针对上面这个问题,HTTP协议本就有着解决方案。

客户端与服务端要交互,前提就是要建立一个连接。而HTTP协议中的URL就起到了这个作用。

URL叫做统一资源定位器,HTTP使用它来传递数据与建立连接。

互联网上的每一个资源都有一个唯一的URL,URL用来指出它们存放的地址。
简单来说,URL可以大致分为协议部分,域名部分,文件名部分。
其实你也可以理解为:URL就是网址

假设我们要在我们的浏览器上访问百度,那么我们现在用的浏览器就是客户端,而要访问的百度,就是服务端。

之后我们在地址栏中输入http://www.baidu.com,很明显,这个http://www.baidu.com就是URL。

可以看出这个URL由协议部分(HTTP协议)和域名部分也就是服务器部分(www.baidu.com)组成。

下面再来看一下这个地址:

http://www.swpan.com/my/photo/1.jpg

这个URL就很棒了,由三部分组成,除了协议和域名部分,还多了一个文件名部分。这个文件名部分,用来指明你获取的是服务端什么路径下的什么文件。

像这里就是获取服务端,my/photo/下面的1.jpg 文件。

HTTP小知识

3

想必大家也发现了,上图中的那个两个单词吧。

request,response

这两个单词的意思分别是请求和响应的意思。

所以结合HTTP协议,我们就可以晓得。

request 是客户端通过HTTP发送一个请求消息给服务器
respones 是服务器接收客户端发过来的请求,并返回一个HTTP响应消息。

关于request和response方面的东西,我今天先不说了,下次有机会再单独写篇文章介绍这两个玩意。

我接下来要说的的就是开头提起的post和get。

我们在客户端请求服务端的时候,HTTP协议定义了好几种请求的方法:

GET 请求指定的页面信息,并返回实体主体。

HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。

CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS 允许客户端查看服务器的性能。TRACE 回显服务器收到的请求,主要用于测试或诊断。

而我们用到最多的就是post和get这两种请求方法。

这两个都可以作为HTTP中请求的方法,那么它们之间有什么区别呢?

下面我就简单来说一下这两个玩意的区别,让大家对他们熟悉起来。

4

我们先来看一下W3C的解释:

GET

有关 GET 请求的其他一些注释: GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET
请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回数据

POST

有关 POST 请求的其他一些注释: POST 请求不会被缓存 POST 请求不会保留在浏览器历史记录中 POST 不能被收藏为书签
POST 请求对数据长度没有要求

官方的解释其实已经把重要的几点都指出来了,下面我就再补充一点,以及做一些解释。

虽然都是提交方法,但是get在提交的时候,提交内容都会连在URL后面,显示在网址栏中,可以被看到。所以安全性有所降低,所以一般做web开发,提交用户密码时等一些敏感操作时,都不会用get这个方法。

post请求的内容不会出现在URL后面,也不会出现在历史记录中,它传递的参数只出现在request body中,我们是看不到的(除非抓包),所以它时候用来做一些敏感操作。

最后再解释一下,get请求长度并没有规定要多长,之所以长度受限制,是因为浏览器的缘故,不同的浏览器的URL的长度都有着规定,所以get的请求信息加在URL后方时,自然就要因为浏览器而受限制了。

HTTP小知识

相关文章:

  • 2021-12-23
  • 2021-05-21
  • 2021-07-24
猜你喜欢
  • 2021-12-01
  • 2021-12-11
  • 2021-06-07
  • 2021-09-15
  • 2021-05-29
  • 2022-01-22
  • 2021-11-18
相关资源
相似解决方案