跨域问题解决实践

在软件开发中,经常会遇到跨域问题,这个问题比较头疼,今天主要介绍下遇到的跨域问题解决思路及如何解决?

1、首先是后端跨域问题

spring boot中的跨域配置如下:

less 复制代码
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    }

    @Override
    public void addFormatters(FormatterRegistry registry) {
//        registry.addConverter(new LongDateConverter());
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 所有接口
                .allowCredentials(true) // 是否发送 Cookie
                .allowedOriginPatterns("*") // 支持域
                .allowedMethods("GET", "POST", "PUT", "DELETE") // 支持方法
                .allowedHeaders("*")
                .exposedHeaders("*");
    }
}

2、根据http返回状态值判断

查看nginx日志,根据返回状态排查问题。例如:上传文件调用后端接口返回413, 标识请求体过大导致跨域,nginx配置如下:

arduino 复制代码
client_max_body_size 100m;
// 默认nginx上传文件大小限制是1M

3、调用后端接口的OPTIONS(预检)请求

在某些情况下,如果你的nginx需要配置options接口,这个接口是后端没有的,是一个默认的请求,对应的nginx配置

ini 复制代码
location / {
            # if ($request_method = 'OPTIONS'){
                  add_header Access-Control-Allow-Origin *;
                  add_header Access-Control-Allow-Methods 'POST, GET, OPTIONS, DELETE';
                  add_header Access-Control-Max-Age "3600";
                  add_header Access-Control-Allow-Credentials true;
                  add_header Access-Control-Allow-Headers *;
                  add_header Content-Type 'application/json; charset=utf-8';
                  return 204;
             }
           # proxy_pass http://127.0.0.1:8115; 
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

相关推荐
陈橘又青1 天前
100% AI 写的开源项目三周多已获得 800 star 了
人工智能·后端·ai·restful·数据
2501_941148611 天前
C++实时数据处理实战:多线程与异步IO结合高性能代码解析
java·后端·struts
IT_陈寒1 天前
Redis实战:5个高频应用场景下的性能优化技巧,让你的QPS提升50%
前端·人工智能·后端
mzlogin1 天前
借助 Let's Encrypt 节省 SSL 证书费用
后端·devops
虎子_layor1 天前
单机压测从百到三千:一次短链跳转服务的全链路性能优化实战
后端·性能优化
SelectDB1 天前
Apache Doris 中的 Data Trait:性能提速 2 倍的秘密武器
数据库·后端·apache
zhengzizhe1 天前
LangGraph4j LangChain4j JAVA 多Agent编排详解
java·后端
程序员鱼皮1 天前
又被 Cursor 烧了 1 万块,我麻了。。。
前端·后端·ai·程序员·大模型·编程
福大大架构师每日一题1 天前
2025-11-27:为视频标题生成标签。用go语言,给定一个字符串 caption(视频标题),按下面顺序处理并输出一个标签: 1. 将标题中的各个词合并成一
后端
程序员爱钓鱼1 天前
Go语言 OCR 常用识别库与实战指南
后端·go·trae