跨域 解决方案汇总

同源策略

要求访问的地址必须协议、端口号、域名相同
*防止恶意的窃取数据,禁止不同域直接进行js交互

解决跨域的方法:

1.document.domain+iframe 执行跨域

 var iframe=document.getElementById("iframe")
   var win=iframe.contentWindow
   iframe.contentWindow.document

2.window.name+iframe 解决跨域

   window.name="名字"
   window.location="路径"
   另一个页面直接获取window.name

3.location.hash+iframe 解决跨域

  var iframe=document.getElementById("iframe")
   location.hash

4.window.postMessage解决跨域

   window.postMessage("发送内容")
   另一个页面
   window.onmessage=function(e){}

5.web sockets

   var s=new WebSocket("路径")
   s.send("发送内容")
   另一个页面
   window.onmessage=function(e){}

6.jsonp与ajax链接

  function fun(res){}
   script.callback=fun

7.跨域资源共享(CORS)

 var xdr=new XDomainRequest()
   xdr.open(get,路径)
   xdr.send()

8.nginx服务器

需要在服务器配置代理路径,修改服务器的配置文件
conf文件

  server{
      listen 8080
      server_name www.baidu.com
      location {......}
   }

vue 解决跨域 proxy

在项目根目录下定义一个vue.config.js文件
在文件下定义代理的地址:

module.exports={
    devServer:{
        proxy:{
            '/api':{
              target:"https://api.isoyu.com/",
              changeOrigin:true,
              ws:true,
              sucure:true,
              pathRewrite:{
                '^/api':''
              }
            }
         }
    }
}

使用的文件中:

import axios from 'axios'
axios.defaults.baseURL="/api"

SVN与Git区别?

  SVN是集中式版本控制系统,版本库是集中放在中央服务器的,所以首先要从中央服务器哪里得到最新的版本,需要把自己修改的推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
  Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,需把各自的修改推送给对方,就可以互相看到对方的修改了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值