在进行前后端连接时,前端页面没有显示数据库中的数据,打开页面控制台发现报上述错误,查询资料,发现这是跨域行问题。
解决方法:在Controller类中添加@CrossOrigin注解
什么是跨域
当一个请求url的协议,域名,端口三者之间任意一个与当前的url不同都即为跨域
了解一下同源策略
1.同源,就是咱们域名、端口号、ip、采用的协议都相同,那么我们就是同源的
2.反之就是不同源的!!!
3.出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
4.所以,用最简单的话来说,就是前端可以发请求给服务器,服务器也可以进行响应,只是因为浏览器会对请求头进行判断,所以要么前端设置请求头,要么后端设置请求头。
不同源的场景:
- 本地文件,向远程服务器发送请求,可以发送,但是会出现跨域
- 本地服务器跑前端文件,服务器跑服务器程序,也会出现跨域问题
spring boot解决跨域问题
对于 CORS的跨域请求,主要有以下几种方式可供选择:
- 返回新的CorsFilter
- 重写 WebMvcConfigurer
- 使用注解 @CrossOrigin
- 手动设置响应头 (HttpServletResponse)
- 自定web filter 实现跨域