桃园结义 , 版权所有丨如未注明 , 均为原创丨转载请注明

前后端跨域问题-解决方案【笔记】

桃园小编 350次浏览 0个评论 扫描二维码

一、什么是跨域  

    首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。
  1. 跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境。
  2. 跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。
之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致,更详细的说明可以看下表:

URL 说明 是否允许通信
http://www.a.com/a.js
http://www.a.com/b.js
同一域名下 允许
http://www.a.com/lab/a.js
http://www.a.com/script/b.js
同一域名下不同文件夹 允许
http://www.a.com:8000/a.js
http://www.a.com/b.js
同一域名,不同端口 不允许
http://www.a.com/a.js
https://www.a.com/b.js
同一域名,不同协议 不允许
http://www.a.com/a.js
http://70.32.92.74/b.js
域名和域名对应ip 不允许
http://www.a.com/a.js
http://script.a.com/b.js
主域相同,子域不同 不允许
http://www.a.com/a.js
http://a.com/b.js
同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)
http://www.cnblogs.com/a.js
http://www.a.com/b.js
不同域名 不允许

二、前端解决跨域

    1、 通过jsonp跨域
    2、 document.domain + iframe跨域
    3、 location.hash + iframe
    4、 window.name + iframe跨域
    5、 postMessage跨域
    6、 跨域资源共享(CORS)
    7、 nginx代理跨域
    8、 nodejs中间件代理跨域
    9、 WebSocket协议跨域

解决方案:前端解决跨域Nginx反向代理解决跨域问题

三、后台解决跨域

    1、 SpringBoot 实现 CORS 跨域

    2、 Spring MVC 实现 CORS 跨域

百度已收录

桃园结义 , 版权所有丨如未注明 , 均为原创丨转载请注明前后端跨域问题-解决方案【笔记】

您必须 登录 才能发表评论!