为什么会有跨域
浏览器之间有同源策略,同源策略会阻止一个域的脚本与另一个域的脚本之间实现交互,两者之间必须要有相同的协议,主机和端口号;
什么是跨域
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
如何解决
- 使用JSONP;
使用方式是通过在html的页面添加script标签,通过回调函数返回数据;
例子:
<script src="http://test.com/data.php?callback=dosomething"></script>
// 向服务器test.com发出请求,该请求的查询字符串有一个callback参数,用来指定回调函数的名字
// 处理服务器返回回调函数的数据
<script type="text/javascript">
function dosomething(res){
// 处理获得的数据
console.log(res.data)
}
</script>
优点:常用方法,简单实用,兼容性好;
缺点:不支持post请求,只支持get;
JSON和JSONP的区别:
1.JSONP是应用JSON的一种新方法;
2.JSONP是返回一个函数调用,是脚本代码,JSON是一串数据;
- 反向代理,
nginx - CORS是W3C标准,需要在前后端都进行修改;
参考:https://blog.csdn.net/qq_38128179/article/details/84956552