Spring Boot应用Postman访问正常但浏览器返回400白标错误页如何解决?
Spring Boot接口Postman可访问浏览器返回400错误解决方案
常见原因及排查方向
- 必选请求参数缺失
检查接口方法是否标注了@RequestParam(required = true)的参数,Postman测试时默认填充了该参数,浏览器直接访问地址栏未携带参数会直接触发400错误。你可以对比Postman的Params栏配置,在浏览器地址后拼接对应参数再测试。 - produces属性与浏览器Accept头不兼容
你的接口配置了produces = {"application/json"},限定仅返回JSON格式响应。部分浏览器发起GET请求时默认的Accept请求头会优先携带text/html,和接口要求的返回格式不匹配就会触发400错误。你可以修改@RequestMapping配置,调整为:
或者直接移除produces属性,让Spring MVC自动适配请求Accept头。@RequestMapping(value = "/billing-file-generation", produces = {"application/json", "text/html"}, method = RequestMethod.GET) - CSRF防护拦截
Spring Boot默认开启CSRF防护机制,Postman请求不会触发拦截,浏览器同源/跨域请求会被CSRF校验拦截返回400。你可以在Spring Security配置类中临时关闭CSRF校验验证是否为该问题:@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); } } - URL特殊字符未编码
如果请求携带的参数包含空格、中文、特殊符号,Postman会自动做URL编码,浏览器直接在地址栏输入可能未自动编码导致请求格式非法,触发400。
快速定位根因方法
在项目的application.properties/yml中添加如下配置,开启Web请求的Debug日志:
logging.level.org.springframework.web=DEBUG
重启应用后用浏览器访问接口,查看控制台输出的异常栈信息,即可直接定位400错误的具体触发原因。
内容的提问来源于stack exchange,提问作者Gee162016
相关产品推荐
相关产品推荐

