原因:
是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。
解决方案有十种:
1.通过Jsonp实现跨域 (常用)
2.通过修改document.domain来跨子域
3.window.name+iframe跨域
4.跨文档消息传输window.postMessage
5.通过CORS(跨域资源共享)解决AJAX跨域
6.通过Nginx反向代理
7.Nodejs中间件代理(两次跨域)
8.websocket协议跨域
9.localhost.hash+iframe跨域
10.通过设置Access-Control-Allow-Origin
PS:前面九种的具体原理和方案参考:九种跨域方案实现原理
最后一种参考:Ajax 设置Access-Control-Allow-Origin实现跨域访问