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

React+Spring Boot整合部署及405错误解决(Windows IIS环境)

解决React+Spring Boot前后端整合及405方法不允许问题

一、先排查405错误的核心原因

  • 请求方法不匹配:405最常见的原因是前端请求的HTTP方法(GET/POST/PUT等)和Spring Boot后端接口定义的方法不一致。比如前端用POST调用/Browser,但后端只定义了@GetMapping("/Browser"),直接返回405。先确认前后端请求方法完全对应。
  • 跨域预请求拦截:前端在IIS的85端口,后端在8888端口,属于跨域请求。浏览器会先发送OPTIONS预请求,如果后端没处理OPTIONS方法,就会返回405。
  • 接口路径错误:检查Spring Boot是否配置了server.servlet.context-path,如果有,接口实际路径应该是/上下文路径/Browser,而非直接/Browser。

二、本地联调修复步骤

  1. 验证后端接口可用性:用Postman直接调用http://localhost:8888/Browser,指定正确的请求方法,确认接口能正常返回数据。如果Postman也返回405,直接修改后端接口的注解(比如把@GetMapping改成@PostMapping,或者添加@RequestMapping(method = {RequestMethod.GET, RequestMethod.POST}))。
  2. 配置跨域支持:在Spring Boot中添加全局跨域配置,避免预请求失败:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .allowCredentials(true);
    }
}

或者在单个接口上添加@CrossOrigin注解快速测试。
3. 修正前端接口地址:确保前端请求的接口路径和后端完全一致,包括上下文路径(如果有)。

三、部署到Windows服务器的完整流程

1. 前端部署(IIS)

  • 执行npm run build生成React生产包(build文件夹)。
  • 在IIS中新建站点,物理路径指向build文件夹,绑定端口85。
  • 解决路由刷新404问题:安装IIS的URL Rewrite模块,添加重写规则:
    • 匹配URL:.*
    • 条件:{REQUEST_FILENAME} 不是文件,{REQUEST_FILENAME} 不是目录
    • 操作:重写至/index.html

2. 后端部署(Spring Boot)

  • 在IntelliJ中执行mvn clean package(Maven项目)或./gradlew bootJar(Gradle项目),生成可执行jar包。
  • 将jar包上传到Windows服务器的目标目录(如D:\springboot-service)。
  • 启动方式:
    • 临时启动:创建bat脚本start.bat,内容为java -jar your-app-name.jar --server.port=8888,双击运行。
    • 注册为Windows服务(推荐):使用winsw工具,配置xml文件后,执行winsw install注册为服务,实现开机自启。

3. 前后端整合配置

  • 修改前端代码中的接口基地址,从localhost:8888改为服务器的IP/域名(如http://192.168.1.100:8888),重新打包部署到IIS。
  • 服务器防火墙配置:开放85(前端)和8888(后端)端口,确保内外网访问正常。

4. 可选:IIS反向代理优化(避免跨域)

  • 安装IIS的Application Request Routing (ARR)和URL Rewrite模块。
  • 添加重写规则:
    • 匹配URL:^api/(.*)
    • 操作:重写至http://localhost:8888/$1
  • 前端接口改为相对路径/api/Browser,无需再处理跨域问题,同时隐藏后端端口,更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:35:14