Get 和 Post 的区别+jsonp 原理

157 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天
点击查看活动详情
一、Get 和 Post 的区别?什么情况下用到
1.GET 使用 URL 或 Cookie 传参。而 POST 将数据放在 BODY 中
2.GET 的 URL 会有长度上的限制,则 POST 的数据则可以非常大
3.POST 比 GET 安全,因为数据在地址栏上不可见

4.最本质的区别
Get 是用来从服务器上获得数据,而 post 是用来向服务器上传递数据
1)若符合下列任一情况,则用 post 方法:
A)请求的结果有持续性的作用,例如:数据库内添加新的数据行
B)若使用 get 方法,则表单上收集的数据可能让 URL 过长
C)要传送的数据不是采用 ASCII 编码

2)若符合下列任一情况,则用 get 方法:
A)请求是为了查找资源,html 表单数据仅用来搜索
B)请求结果无持续性的副作用
C)收集的数据及 html 表单内的输入字段名称的总长不超过 1024 个字符

二、解释 jsonp 的原理
Jsonp 并不是一种数据格式,而 json 是一种数据格式,jsonp 是用来解决跨域获取数据的一种解决方案,具体是通过动态创建 script 标签,然后通过标签的 src 属性获取 js 文件中的 js 脚本,该脚本的内容是一个函数调用,参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是 ajax 技术,
ajax 请求受同源策略的影响,不允许进行跨域请求,而 script 标签的 src 属性中的链接却可以访问跨域的 js 脚本,利用这个特性,服务端不在返回 json 格式的数据,而是返回调用某个函数的js 代码,在 src 中进行了调用,这样就实现了跨域,其原理就是动态创建 script 标签,通过script 标签的 src 属性进行调用