No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:0000' is therefore not allowed access.
原因:浏览器的同源策略不允许跨域访问,所谓同源策略指协议、域名、端口号相同。
解决方式:局部配置、全局配置、采用proxyTable解决。
第一种——局部配置
在每个controller类的上面添加以下代码
@CrossOrigin(allowedHeaders = "*", allowCredentials = "true")
public class ModelController {
}
第二种——全局配置
在web层的spring.xml配置文件中添加下面代码
<mvc:cors>
<mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,POST,OPTIONS"/>
</mvc:cors>
第三种——采用proxyTable解决
proxyTable是什么?
vue-cli提供的解决vue开发环境下跨域问题的方法,proxyTable的底层使用了http-proxymiddleware(https://github.com/chimurai/http-proxy-middleware),它是http代理中间件,它依赖node.js, 基本原理是用服务端代理解决浏览器跨域:
修改前端的全局配置js文件:
'/api/cms': {
target: 'http://localhost:0000',
pathRewrite: {
'^/api': ''//实际请求去掉/api
}
}