springmvc前后端在一个项目中不存在跨域的问题。
web系统的开发,springmvc三层架构:
controller 控制层
service 业务逻辑层
dao数据访问层
微服务架构:专业的人干专业的事
前端 vue,ajax技术调用接口
后端java,go,php提供接口
前端(vue)调用接口 -->ajax技术 -->后端(springboot)的接口不在同一个域下就产生跨域的问题
浏览器的安全策略:遵循同源策略,协议、地址、端口号都相同。
协议不同、地址不同、端口不同都为跨域,会触发浏览器的安全策略
不会发生跨域问题的情况:
前端、后端项目分别部署在不同的服务器,会产生跨域问题
跨域问题报错:
跨域的请求可以到达,但是返回数据会触发浏览器的同源安全策略,进行拦截报错,无法获取结果。
备注:
1、端口和协议的不同,只能通过后台来解决
2、localhost和127.0.0.1虽然都指向本机,但也属于跨域
1、jsonp(只支持get请求,不支持post请求)
2、@CrossOrigin 注解 ,springMVC提供(小项目中推荐)
@CrossOrigin 实现:
在响应地址头上加参数,告知浏览器此接口允许跨域。
不使用注解的情况下,手动在响应头中添加参数,解决跨域问题
自定义注解实现(aop前置通知无条件直接添加响应头+反射)
小项目实现方式:
1注解代理实现
2过滤器添加
3灭个接口方法上加上
response.addHeader(“Access-Control-Allow-origin”,"*")
3、nginx(代理实现)
nginx解决方案:同源策略
大项目中:
1前端(vue)————>nginx()——网关——>
2根据nginx根据不同的项目名称进行转发(推荐)
前端请求—html/api—》nginx192.168.110.3—判断路径后转发—html(110.1)/api(110.2)——》vue——192.168.110.1/springboot——192.168.110.2



