Http 协议支持多种从服务器检索数据或在服务器上执行操作的方法,如上传数据、删除文件等,协议支持以下方法,例如 GET、 POST、 PUT、 DELETE、 HEAD、 DELETE、 OPTIONS 和 TRACE等,其中Get 和 POST 是两种最常见的 HTTP 请求方法,相信大家在做 SEO 的过程中也听说过或者在 web 中接触使用过。虽然两者都可以用来从客户端到服务器发送和接收数据,但是它们之间在安全性、速度和要传输的数据量等方面还是有区别的。

一、GET

我们先看第一个最常用的 HTTP 是使用 GET 方法使用给定的 URI 从服务器检索信息,使用 GET 的请求应该只检索数据,对数据不应该有其他影响。Get 请求通过在请求的 URL 部分中指定参数,然后从 web 服务器检索数据,当然它主要用于静态文件检索。下面是 HTTP GET 请求的一个例子:

GET /home.html HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.rrdaj.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

二、POST

Post 请求用于使用 HTML 表单向服务器发送数据,例如客户信息、文件上传等,以下是 POST 请求的样子:

POST / HTTP/1.1
content-type:application/x-www-form-urlencoded;charset=utf-8
host: https://rrdaj.com
content-length:207

Action=GetStatus&SignatureMethod=HmacSHA256&JobId=JOBID&SignatureVersion=2&Version=2010-06-03&Signature=%2FVfkltRBOoSUi1sWxRzN8rw%3D&Timestamp=2011-06-20T22%3A30%3A59.556Z

第一行表示 http 请求的类型,第2-4行包含 HTTP 头,包括请求的端点,在 HTTP 头部之后,请求的正文包含参数列表。每个参数由一个 & 符号分隔。Action 参数指示要执行的操作。

HEAD 请求方法与 GET 相同,但它只传输状态行和头部分。Head 方法在功能上类似于 GET,只是服务器用响应行和头部信息回复,但没有实体内容,其他请求方式,大家有兴趣可以去百度搜搜,我这里就不多说了。

三、Get 方法与 POST 方法的区别

现在我们知道了 GET 和 POST 方法的作用,接下来让我们来理解它们之间的区别:

1、首先要知道 GET 是一个安全的方法(idempotent 幂等的),而 POST 是非幂等方法。如果一个 HTTP 方法每次都返回相同的结果,那么它就是幂等的。Http 方法 GET、 PUT、 DELETE、 HEAD 和 OPTIONS 都是幂等方法,以确保这些方法总是返回相同的结果。POST 是非幂等方法,在实现随每个请求而变化的内容时,我们应该使用 POST 方法。例如,要访问 HTML 页面或图像,我们应该使用 GET,因为它总是返回相同的对象,但如果我们必须将客户信息保存到数据库,这个时候我们就应该使用 POST 方法。幂等方法也被称为安全方法,我们不关心客户端对安全方法的重复请求。2、我们只能用 GET 方法发送有限的数据,并且它是在头部请求 URL 中发送的,而我们可以用 POST 发送大量的数据,因为它只请求主体的一部分。

3、GET 方法并不是很安全的,因为数据是在 URL 中公开的,我们可以很容易地将其加入书签并再次发送类似的请求,相对的 POST 是安全的,因为数据是在请求主体中发送的,我们不能将其加入书签。顺便说一下,如果需要考虑安全性,这还不够,因为 HTTP 请求可能在途中被拦截。如果更好地使用 HTTPS 或 SSL 加密来保证 HTTP 通信的安全,那就更好了。

4、GET 是默认的 HTTP 请求方法,而我们需要指定 POST 方法来使用 POST 方法发送请求。

5、网页中的超链接一般使用 GET 方法。比如百度spider常用于下载静态内容,如 JPEG 图像,文本文件等信息时候,都是使用 GET 方法。

6、GET 和 POST 方法的另一个区别是 GET 请求是可书签的,例如咱们常用的 Google Search,但你不能将 POST 请求加入书签。还有就是与前面的区别一样,GET 请求也是可缓存的,但是不能缓存 POST 请求。

7、发送方式不同:GET 将数据作为 URI 的一部分发送,而 POST 方法将数据作为 HTTP 内容发送。例如:Get 请求作为 URL 上的查询字符串发送:

GET index.html?name1=value&name2=value HTTP/1.1
Host: www.rrdaj.com

Post 请求在 HTTP 请求的正文中发送是这样的:

POST /index.html HTTP/1.1
Host: www.rrdaj.com
name1=value&name2=value

四、Html 中 GET 和 POST 方法如何选择的问题

知道 GET 和 POST 方法之间的所有区别后,你就可以按照这个简单的规则在 web 应用程序中选择 GET 和 POST 方法了。使用 GET 方法从服务器读取数据并显示它们,例如静态 HTML 页面、图像、 CSS 文件和其他资源。对于任何将数据写入服务器的事情,就使用 POST,例如将数据插入或更新到数据库,上传文件,删除条目等。不能使用 GET 使用 HTTP 协议上传文件的一个原因是,在最大 URI 长度的限制下,使用 GET 方法发送的数据量是很有限的。

在选择 GET 与 POST 方法时,还应该考虑安全性(对于技术开发者而言)。另一方面,POST 作为 HTTP 请求体的一部分发送数据,尽量使用 SSL 和 TLS 对数据进行加密。这就是为什么当你登入网上银行或任何在线门户网站时,所有机密数据从客户端到服务器都要使用 POST 方法传输,例如用户名和密码。同样,当你在网上预订机票,使用信用卡付款时,或者当你进行资金转账时,所有从浏览器到服务器的数据都会进入 POST 请求。为了注册,登录等,我们使用的方法作为 HTML 表单提交。但是您必须记住一件事,POST 不是幂等的,这意味着它不能安全地重复。

    版权声明:

     本网站的所有文字、图片资料,【未注明转载的】均由作者亲自整理创作,任何媒体、网站或个人未经本人同意和授权不得复制、转载、转贴或以其他方式复制发布/发表,请尊重我的劳动成果,侵权必究,谢谢。

阿沐
1625139774@qq.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注