ajax 中 post 请求 和 get 请求的区别(二)

get 请求

1、传递数据方式: 数据直接在post 的 url 中传递,直接拼接在 url ? 后面,多个数据用 & 符号拼接

xhr.open('get ‘, 2.get.php?username = Tom & age = 30&’)

2、传递数据的类型: 字符串类型

3、传递数据的大小问题: 由于 url 长度限制的原因,如果通过get方式提交过多的数据,可能被截断,导致传递给后端的数据不完整

4、 缓存问题: get请求会根据我们的请求链接来进行缓存,从而导致后端更改的数据无法及时更新

解决方案: 可以在请求链接的问好(?)后面用 & 符号连接一个变量,比如:时间戳或者随机数之类的,这样每次的连接地址都是不一样的,也就不会缓存了
比如: xhr.open('get ‘, 2.get.php?username = Tom & age = 30&’ + new Data().getTime(), true);

5、编码问题: 在传递数据的时候,需要传递中文字之类的,就会出现乱码的情况,导致无法正常获取到数据

解决方案: 使用encodeURI
比如:xhr.open('get ', 2.get.php?username = '+ encodeURI(‘小明’) ‘+ &age = 30’ , true);

6、信息安全性: 在第一条中说到 get 是将传递的数据直接放在url中,也就是所有的人都可以直接在地址栏上看到用户的信息,相对来说安全性比较低


post 请求:

1、传递数据方式: 在请求头中传递数据,数据放在send()中作为参数传递。

xhr.send(’ username=Tom& age=30 ’ )

2、设置传递数据的类型 :

xhr.setRequestHeader(’ content-type ', ’ application/x-www-form-urlencoded ')

由于后端无法直接判断我们传过去的数据是什么类型的,所以需要手动设置,以告诉后端

3、 传递数据大小问题: 默认8M左右,但是后端可以修改,所以理论上没有限制

4、缓存问题:
post是属于提交类型的数据传递,在这里是没有缓存问题的

5、编码问题:
由于在之前已经设置过传递数据类型 content-type 所以,这里传递数据的时候可以直接传中文,不需要再次转码

6、信息安全性: post请求是通过请求头来传递数据,没有直接将信息暴露在外,安全性相对要高一些

猜你喜欢

转载自blog.csdn.net/weixin_43410419/article/details/84316920