18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 建站知识 > jsonp 解决浏览器跨域问题 087

jsonp 解决浏览器跨域问题 087

时间:2023-02-20 18:30:01 | 来源:建站知识

时间:2023-02-20 18:30:01 来源:建站知识

jsonp 解决浏览器跨域问题 087: 一、 JsonP 简介

1 什么是 JsonP

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)

那获取资料,即跨域读取数据。

为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同

源策略。

2 什么是跨域?

跨域是指一个域(网站)下的文档或脚本试图去请求另一个域(网站)下的资源

3 什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,

它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策

略。如果缺少了同源策略,浏览器很容易受到 XSS、CSFR 等攻击。所谓同源是指"协议+域

名+端口"三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。

3.1非同源策略限制以下几种行为:

1.) Cookie、LocalStorage 和 IndexDB 无法读取

2.) DOM 和 Js 对象无法获得

3.) AJAX 请求不能发送

4 常见跨域场景

URL 说明 是否允许通信

http://www.domain.com/a.js

http://www.domain.com/b.js 同一域名,不同文件或路径 允许

http://www.domain.com/lab/c.js

http://www.domain.com:8000/a.js

http://www.domain.com/b.js 同一域名,不同端口 不允许

http://www.domain.com/a.js

https://www.domain.com/b.js 同一域名,不同协议 不允许

http://www.domain.com/a.js

http://192.168.4.12/b.js 域名和域名对应相同 ip 不允许

http://www.domain.com/a.js

http://x.domain.com/b.js 主域相同,子域不同 不允许

http://domain.com/c.js

http://www.domain1.com/a.js

http://www.domain2.com/b.js 不同域名 不允许

5 跨域解决方案

1) 通过 jsonp 跨域

2) document.domain + iframe 跨域

3) location.hash + iframe

4) window.name + iframe 跨域

5) postMessage 跨域

6) 跨域资源共享(CORS)

7) nginx 代理跨域

8) nodejs 中间件代理跨域

9) WebSocket 协议跨域

6 JsonP 优缺点

JSONP 的优点是:它不像 XMLHttpRequest 对象实现的 Ajax 请求那样受到同源策略的

限制;它的兼容性更好,在更加古老的浏览器中都 可以运行,不需要 XMLHttpRequest 或

ActiveX 的支持;并且在请求完毕后可以通过调用 callback 的方式回传结果。

JSONP 的缺点则是:它只支持 GET 请求而不支持 POST 等其它类型的 HTTP 请求;它

只支持跨域 HTTP 请求这种情况,不能解决不同域的两个页面之间如何进行 JavaScript 调用

的问题

关键词:解决,浏览

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭