跨域问题

浏览器对于js的同源策略的限制,例如a.cn下面的js不能调用b.cn下的js数据

同源的概念又是什么呢:简单解释:相同域名,端口相同,协议也相同。

同源策略:必须与浏览器上的url地址处于同域上,也就是域名,端口协议都相同

比如我位于study.cn 去请求www.baidu.com上的资源,就不行。

同源策略的保护,若没有,那么一些重要的机密网站就会很危险。

jsonp 全称是json padding,是为了解决跨域请求资源而产生的解决方案,是一种依靠开发人员创造出的非官方的跨域数据原则,

json返回的是一串数据,JSONP返回的是脚本代码(包含函数的调用)

JSONP只支持get请求,不支持post请求
(类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是get jsonp将传递一个callback参数给客户端,

随后服务端返回数据时将这个callback参数作为函数包裹住json数据,返回给客户端。

https://blog.csdn.net/hansexploration/article/details/80314948

2 后端修改header

 header(‘Access-Control-Allow-Origin:*’);//允许所有来源访问 
 header(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式 

3 nginx做反向代理

www.baidu.com 下调用www.sina.com拿到返回值,载进行返回

4 修改document.domain

不同的window之间不能访问 只能适用于主域相同子域不同的情况。

document.domain 只能设置成自身或更高一级的域

a.b.example.com中某个文档的document.domain可以设成a.b.example.com、b.example.com 、example.com中的任意一个,但是不可以设成c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。 
兼容性:所有浏览器都支持; 
优点: 
 可以实现不同window之间的相互访问和操作; 
缺点: 
 只适用于父子window之间的通信,不能用于xhr; 
 只能在主域相同且子域不同的情况下使用; 
5.window.name

关键点:window.name在页面的生命周期里共享一个window.name; 
兼容性:所有浏览器都支持; 

缺点: 
 大小限制:window.name最大size是2M左右,不同浏览器中会有不同约定; 
 安全性:当前页面所有window都可以修改,很不安全; 

6 使用postMessage功能

是h5新引入的概念,我们可以通过window.postMessage的方式进行使用,并可以监听其发送的消息; 
兼容性:移动端可以放心用,但是pc端需要做降级处理 

优点 
 不需要后端介入就可以做到跨域,一个函数外加两个参数(请求url,发送数据)就可以搞定; 
 移动端兼容性好; 

https://blog.csdn.net/tjcjava/article/details/76468225

还需进一步做整理。

https://www.cnblogs.com/2050/p/3191744.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值