原生
通常为了减轻web服务器的负载,我们把js、css,img等静态资源分离到另一台独立域名的服务器上,在html页面中再通过相应的标签从不同域名下加载静态资源,而被浏览器允许。即页面中的链接、重定向、表单提交不受同源策略限制。基于此原理,我们可以用 src 和 href 两个属性跨域访问。
例如,通过动态创建script,再请求一个带参网址实现跨域通信。

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

// 回调执行函数
function handleCallback(res) {
    console.log('请求成功',res);
}


vue

下载vue-jsonp

npm install vue-jsonp --save-dev

main.js

import Vue from 'vue'
import VueJsonp from 'vue-jsonp'
Vue.use(VueJsonp)

// 因为引入了vue-jsonp,所以可以直接使用this. j s o n p , V u e . u s e ( V u e J s o n p ) 方 法 里 把 jsonp, Vue.use(VueJsonp)方法里把 jsonp,Vue.use(VueJsonpjsonp赋给vue原型了:Vue.prototype.$jsonp = jsonp

xx.js


mounted() {
	window.jsonpCallback = (data) => {
		console.log(data.token)
	}
},
methods: {
	getJson() {
		this.$jsonp(url, {
		params: obj
		}).then((json) => {
		// 返回的jsonp数据不会放这里,而是在 window.jsonpCallback
		console.log(json)
		})    
	},
}


Logo

前往低代码交流专区

更多推荐