跨域 && 监听对象改变

2021-08-12  本文已影响0人  大佬教我写程序

跨域

解决办法:
jsonp
<script>
  var script = document.createElement('script');
  script.type = 'text/javascript';

  // 传参一个回调函数名给后端,方便后端返回时执行这个在前端定义的回调函数
  script.src = 'http://www.daxihong.com:8080/login?user=admin&callback=jsonCallback';
  document.head.appendChild(script);

  // 回调执行函数
  function jsonCallback(res) {
      alert(JSON.stringify(res));
  }
 </script>
CORS
nodejs中间件代理跨域
module.exports = {
  entry: {},
  module: {},
  ...
  devServer: {
      historyApiFallback: true,
      proxy: [{
          context: '/login',
          target: 'http://www.daxihong.com:8080',  // 代理跨域目标接口
          changeOrigin: true,
          secure: false,  // 当代理某些https服务报错时用
          cookieDomainRewrite: 'www.daxihong.com'  // 可以为false,表示不修改
      }],
      noInfo: true
  }
}

js监听对象属性的改变

Object.defineProperty(user, 'name', {
    set : funtion(value){
               name = value;
                console.log('set: name:' + value)
        }
})

对多个属性进行监听

Object.defineProperties(obj,{
  a : {
        configurable: true, // 设置属性可以更改,默认为false
        set : function(value){}
  },      
   b : {
       configurable: true, // 设置属性可以更改,默认为false
        set : function(value){}
  }
} 
})
var peo = { name: 'zhangsan', salary: 27 }
//interceptor 拦截
var interceptor = {
  set: function (recObj, key, value) {
    console.log(key, 'is changed to', value) //name is changed to lisi
    recObj[key] = value
  },
}
//创建代理以进行侦听
proxyEngineer = new Proxy(peo, interceptor)
//做一些改动来触发代理
proxyEngineer.name = 'lisi'
console.log(peo) //{name: "lisi", salary: 27}
上一篇下一篇

猜你喜欢

热点阅读