什么情况下造成跨域?解决跨域的方案有哪些?

1⃣️: 因为同源策略限制,不同源会造成跨域;

2⃣️: 以下任意一种情况不同都是不同源:

    协议不同: http://

    子域名不同:www

    主域名不同:baidu.com

   端口号不同:8080

  ip地址和网址不同:www.baidu.com

3⃣️: 跨域解决方法:

    1、jsonp 

       只能解决get跨域

        1.1   jsonp解决跨域的原理是什么?

            原理:

               其本质是利用了标签具有可跨域的特性,由服务端返回预先定义好的javascript函数的调用,并且将服务端数据以该函数参数的形式传递过来

     动态创建一个script标签,利用script标签的src属性不受同源策略限制;

     因为所有的src属性和href属性都不受同源策略的限制,可以请求第三方服务器数据内容;

            步鄹:

      1、 创建一个script标签;

      2、script的src属性设置接口地址;

      3、接口参数必须带一个自定义函数名,要不然后台无法返回数据;

      4、通过定义函数名去接受后台返回的数据;

2、cors跨域资源共享:

     原理:服务器设置Access-Control-Allow-OriginHTTP响应头之后,浏览器将会允许跨域请求;

     限制:浏览器需要支持html5,可以支持post、put等方法兼容IE9 以上

3、设置document.domain

     原理:相同主域名不同子域名下的页面,可以设置document.domain让他们同域

     限制:同域document提供的是页面间的相互操作,需要载入iframe页面;

4、用Apache做转发(逆向代理),让跨域变成同域

 

 

 

 

 

 

 

 

 

 

 

              

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值