You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring+React项目部署VPS访问出现401未授权错误如何解决

问题核心成因

该报错本质是Spring Security的权限拦截规则覆盖了前端静态资源的访问路径:你在访问站点时,请求首先到达后端服务,触发权限校验逻辑,还没到返回静态前端页面的步骤就被拦截返回401,核心触发原因通常有三类:

  • 前后端合并部署时,Spring Security未配置放行React静态资源路径,默认拦截所有请求
  • 访问端口错误:前后端分开部署时,你误访问了后端服务的启动端口,而非前端托管的端口
  • 静态资源映射规则错误,Spring Boot未识别到你存放的React静态资源,将路径当做接口请求触发拦截

解决方法

如果你是前后端合并部署(React打包后放入Spring Boot的resources/static目录一起启动)

  1. 修改Spring Security配置类,放行所有前端静态资源路径,参考代码:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                // 放行前端静态资源与页面路径
                .requestMatchers("/", "/index.html", "/static/**", "/*.js", "/*.css", "/*.png", "/*.ico", "/manifest.json").permitAll()
                // 放行后端公开接口(如登录、验证码接口)
                .requestMatchers("/api/auth/**").permitAll()
                // 其余业务接口需要认证
                .anyRequest().authenticated()
            )
            .csrf(csrf -> csrf.disable());
        return http.build();
    }
}
  1. 若自定义了静态资源存放路径,补充WebMvc资源映射配置:
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
    }
}
  1. 如果你配置了server.servlet.context-path上下文路径,需要在放行规则中加上对应前缀,或者直接用/**匹配所有静态资源路径。

如果你是前后端分开部署(前端用Nginx托管,后端单独启动)

  1. 确认你访问的是前端托管对应的端口(通常是Nginx监听的80端口),而非后端服务的启动端口(如8080)。
  2. 调整Nginx配置,仅将后端接口请求转发到后端服务,其余请求返回React前端页面,参考配置:
server {
    listen 80;
    server_name 你的VPS公网IP;

    # 前端静态资源匹配
    location / {
        root /usr/share/nginx/react-dist; # 替换为你的React打包后dist目录的绝对路径
        try_files $uri $uri/ /index.html;
    }

    # 后端接口转发
    location /api/ {
        proxy_pass http://127.0.0.1:8080; # 替换为你的后端服务本地监听地址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

改完配置后重启对应服务,清除浏览器缓存重新访问即可。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 01:45:01