解决跨域问题的主要方法包括CORS配置、代理服务器、JSONP、Nginx反向代理及第三方库方案。以下是具体实现方式:
一、CORS(跨域资源共享)
-
后端配置 :通过设置响应头
Access-Control-Allow-Origin
、Access-Control-Allow-Methods
、Access-Control-Allow-Headers
等,允许指定源、方法和头信息。例如Spring Boot中全局配置:@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/ **") .allowedOrigins("http://localhost:8080") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowedHeaders("*"); } }
-
适用场景 :前后端分离项目,支持多种客户端访问。
二、代理服务器
-
开发环境 :使用Webpack Dev Server等工具配置代理,将前端请求转发到后端。例如:
// webpack.config.js devServer: { proxy: { '/api': { target: 'http://backend-server.com', changeOrigin: true, pathRewrite: { '^/api': '' }, }, }, }
-
生产环境 :Nginx等服务器可配置反向代理,处理跨域请求并添加响应头。例如:
location /api { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE'; proxy_pass http://backend-server.com; }
三、JSONP(仅限GET请求)
- 原理 :通过动态创建
<script>
标签,将回调函数作为参数传递给后端,后端返回数据时执行该函数。例如: