谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

目录

前言

一、什么是GET、POST?

1.1GET

1.2POST

二、如何轻松回答?

第一步、直接盖棺定论:

第二步、谈细节上的区别:


前言

        要想回答好这个问题,咱们先来了解以下什么是GET、POST方法,有哪些细节要注意;


一、什么是GET、POST?

1.1GET

        GET是HTTP请求最常用的方法,本质上就是浏览器通过GET方法,向服务器发起GET请求,从服务器拿到相应的数据;

什么时候会触发这个请求?

1.浏览器的地址栏中输入URL,就会触发GET;

2.HTML里的link、a、img、script会触发GET请求;

3.html中的form标签可以构造出GET请求;

4.使用 JavaScript 的 ajax 也可以构造 POST 请求

很多人的误区:“GET请求长度长度最多是1KB / 2KB …?”;这个说法真的正确吗?

        HTTP 协议由 RFC 2616 标准定义, 标准原文中明确说明: “Hypertext Transfer Protocol — HTTP/1.1,” does not specify any requirement for URL length.

        也就是说,标准中,并未对URL的长度做出限制;其实虽然没有提到有长度上限,但是浏览器和HTTP服务器在实现的时候,可能有长度上线,也可能没有,具体要看如何实现了;

1.2POST

        POST是用来将用户输入的数据发送给服务器的一种方法;(例如一些网站的登录界面,当你输入账号和密码,提交以后,便会执行这个方法);

什么时候会触发这个请求?

1.通过 HTML 中的 form 标签可以构造 POST 请求

2.使用 JavaScript 的 ajax 也可以构造 POST 请求

POST请求的特点

1.POST请求中,首行第一部分为POST;

2.URL一般没有query string;

3.header 部分有若干个键值对结构.

4.body部分的数据格式有很多种,一般不会为空;


二、如何轻松回答?

第一步、直接盖棺定论:

        GET和POST没有本质区别,使用GET的场景基本都可以使用POST代替,使用POST的场景也可以用GET代替;

第二步、谈细节上的区别:

细节一:(语义上)

        GET语义:从服务器获取一个数据;

        POST语义:往服务器提交一个数据;

        虽然HTTP协议说是这么说,但是很多程序员还是没有遵守这个约定~

细节二:(使用习惯上)

        习惯上,给服务器传递数据,GET通常放在URL的query string中,POST通常是放在body;中;

        GET能放在body中吗?可以滴,HTTP客户端支持,但是浏览器不一定支持;

        POST能放在query string中吗?可以呢!浏览器和客户端都支持~

细节三:(幂等)

        GET请求建议实现成“幂等”的,POST不做要求;(幂等简单来说就是,输入是确定的,输出也是确定的);

        服务器设计时会提供一些api:api传入的参数视为输入,返回的结果视为输出;基于GET的api建议设置成幂等的,POST不做要求;

细节四:(缓存)

        在幂等的基础上,GET请求结果是可以被缓存的,POST一般不缓存;

        这时浏览器默认的,若当前GET时幂等的,就不做处理,让浏览器缓存;若当前GET不是幂等的,就需要通过特殊技避免产生缓存;(技巧就是让GET请求的URL都不同,通过特殊的query string保证URL不同);

细节五:(数据长度限制)

        由于 GET 请求一般放在 URL 中,因此请求的数据长度受到限制,安全 URL 长度限制通常为 2048 个字符,但因浏览器和 Web 服务器而异。

        POST 请求无限制。

POST比GET更安全,这个说法正确吗?

        虽然在登录界面GET把参数放到的URL中确实不好,但是放到POST的body中,也一样没有更安全;因为咱们平时谈到的是否安全,是指:你的数据被黑客截获后,会不会对你造成信息泄漏这样的影响,只要你的代码没有进行加密,就谈不上安全;


谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/129844.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!