什么是跨域
-
本域:同协议、同域名、同端口。
-
同源策略:为了保护用户隐私和防止恶意网站窃取数据,浏览器默认只允许与本域的接口进行交互。一个域下的JavaScript脚本不能直接访问或读取另一个域的资源,也不能直接向另一个域发起请求。
-
跨域:只要浏览器发起请求URL的协议、域名、端口三者中任意一个与当前页面URL不同,就为跨域。
CROS简介
CROS(跨域资源共享)是一种浏览器技术,用于允许服务器明确地表明哪些来源可以访问它的资源,从而解决跨域问题。CROS通过在HTTP响应头中添加特定的头部字段来实现跨域访问,这些字段包括Access-Control-Allow-Origin、Access-Control-Allow-Methods和Access-Control-Allow-Headers等。
CROS技术细节
- 使用Spring Boot的@CrossOrigin注解:在Controller层需要跨域的类或方法上添加@CrossOrigin注解,可以快速解决跨域问题。
- 使用过滤器(Filter):通过配置过滤器来添加CORS相关的响应头,实现跨域访问。
- 使用Nginx做动态代理:通过配置Nginx作为反向代理,实现跨域请求的转发和响应。
- 前端配置代理:通过Vite的代理功能,将请求到不同的服务器,避免跨域问题。