【js-05】

get与post的区别?application json与form表单的区别?

分享人:张乾

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

GET和POST是什么?

GET和POST是 HTTP协议中的两种发送请求的方法。

HTTP又是什么?

HTTP是hypertext transfer protocol(超文本传输协议)的简写, 它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。 一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容

请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,常用的有: GET、 POST

application json与form 是什么?

协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。 实际上,我们完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。

Content-Type的类型有很多种:可以参考对照表。

这里常用的两种类型:application/x-www-form-urlencoded 和 application/json

2.知识剖析

get和post的区别?

get: 从服务器上获取数据,将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接, 而各个变量之间使用“&”连接。

post: 向服务器传送数据,将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

get 和 post只是一种传递数据的方式,get也可以把数据传到服务器,他们的本质都是发送请求和接收结果。只是组织格式和数据量上面有差别。

GET和POST长度的限制问题

GET
    1.GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。
    2.实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数。
POST
    1.同样的,HTTP协议没有对POST进行任何限制,一般是受服务器配置限制或者内存大小。
    2.PHP下可以修改php.conf的postmaxsize来设置POST的大小。

GET和POST的安全性

1.GET是通过URL方式请求,可以直接看到,明文传输。
2.POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的。
3.GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中。

GET幂等,POST不幂等

幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。
1.按照RFC规范,PUT,DELETE和安全方法都是幂等的。虽说是规范,但服务端实现是否幂等是无法确保的。
2.引入幂等主要是为了处理同一个请求重复发送的情况,比如在请求响应前失去连接,如果方法是幂等的,就可以放心地重发一次请求。 这也是浏览器在后退/刷新时遇到POST会给用户提示的原因: POST语义不是幂等的,重复请求可能会带来意想不到的后果。

application/x-www-form-urlencoded

这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性, 那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样

application/json

application/json 这个 Content-Type 作为响应头大家肯定不陌生。 实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。 由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify, 服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。 JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。 Google 的 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。

3.常见问题

4.解决方案

5.代码实战

6.拓展思考

put 和 delete 请求

PUT:上传指定的 URI 表示。

DELETE:删除指定资源。

PUT,DELETE操作是幂等的。

7.参考文献

参考一:get和post区别?—— 知乎

参考二:HTTP 方法:GET 对比 POST

8.更多讨论

鸣谢

感谢大家观看

BY : 张乾