SpringBoot前后端分离项目因为跨域原因后端无法读取怎么解决
时间: 2023-10-22 13:09:52 浏览: 301
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
5星 · 资源好评率100%
出现跨域问题是因为前端和后端的域名或端口不一致,导致浏览器拦截了请求。解决跨域问题可以通过以下两种方式:
1. 后端添加跨域支持:
后端可以通过在响应头中添加跨域许可信息来解决跨域问题。在 Spring Boot 中,可以通过在 Controller 层添加 `@CrossOrigin` 注解来支持跨域访问。
示例代码:
```
@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "*", maxAge = 3600)
public class ApiController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
```
`@CrossOrigin` 注解中的 `origins` 参数指定允许访问的来源地址,`maxAge` 参数指定响应的有效期。
2. 前端使用代理:
前端可以使用代理服务器来解决跨域问题。在 Vue.js 或 Angular 中,可以通过在 `vue.config.js` 或 `angular.json` 中配置代理服务器来实现。
示例代码:
```
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
}
}
```
以上代码配置了一个代理服务器,将前端请求的 `/api` 转发到后端的 `http://localhost:8080` 地址,并且设置了 `changeOrigin` 参数为 `true`,表示改变请求头中的 Origin 字段,使得后端可以识别请求来自于代理服务器。同时,`pathRewrite` 参数将 `/api` 转发到根路径,使得后端可以正确地解析请求路径。
阅读全文