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

Spring 3.5接口Postman请求正常,Web应用(FetchJS)调用失败求助

接口请求Postman正常但FetchJS Web应用异常的排查思路

我遇到一个技术问题:接口请求在Postman中可正常执行,但在使用FetchJS的Web应用中却无法正常工作。

Postman请求截图:
Postman请求截图

Web应用请求截图:
Web应用请求截图

我的SecurityConfiguration配置如下:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
            .csrf()
            .disable()
            .authorizeHttpRequests()
                    .requestMatchers("/api/v1/auth/**")
                    .permitAll()
                    .anyRequest()
                    .authenticated()
                    .and()
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authenticationProvider(authenticationProvider)
            .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);
    return http.build();
}

排查思路&解决方案

  • 跨域问题检查:Web应用大概率存在CORS限制,Postman不会触发浏览器的跨域预检机制,但Fetch会。需确认后端是否配置了正确的CORS规则,允许前端域名发起请求,同时要确保允许携带自定义Header(如JWT Token相关Header)。
  • 请求Header对比:仔细核对两张截图的请求Header:
    • 检查是否有遗漏的Header(比如Postman带了Authorization或其他自定义Header,Fetch请求中未添加)
    • 确认Header的拼写、大小写是否一致(比如Content-Type是否正确设置,Postman可能自动补全了正确类型,Fetch需手动指定)
  • 请求体格式验证:确保Fetch发送的请求体格式和Postman完全一致,比如是否为JSON格式、是否用JSON.stringify()处理过数据、Content-Type是否设为application/json。
  • JWT Token处理:如果接口需要JWT验证,检查Fetch是否正确携带Token:
    • Token是否过期、是否从正确的存储位置(如localStorage)读取
    • 请求Header中是否遗漏了Bearer 前缀
  • 错误信息定位:打开浏览器控制台的Network面板,查看请求返回的具体状态码(如401、403、500)和响应内容,这是最直接的问题定位依据。
  • Spring Security过滤器逻辑检查:排查jwtAuthFilter的处理逻辑,确认是否对Fetch请求的Header解析存在差异,比如是否正确处理了OPTIONS预检请求(即便禁用了CSRF,CORS预检仍需后端支持)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:33:21