提问人:Vishwas Upadhyay 提问时间:2/11/2022 更新时间:1/4/2023 访问量:359
通过 Chrome 和 Edge 浏览器的 Spring Boot 代理控制器的 Ajax Post 请求的请求正文间歇性地丢失
Request body of Ajax Post request is intermittently missing for spring boot proxy controller via Chrome and Edge browser
问:
我在 Chrome 和 Edge 中使用我的 Web 应用程序时遇到了奇怪的间歇性问题,同时在单击按钮时发出简单的 ajax 发布请求。Ajax 请求落在我的应用程序的 Spring Boot 代理控制器上,该控制器进一步使用 RestTemplate 将请求发送到第三方服务器。我在 mozila 浏览器上测试了几次,甚至没有遇到过一次问题。因此,我假设这个奇怪的问题与浏览器有关,而不是与代码库有关。有没有人经历过同样的经历?
迄今为止的调查结果:在调试时,我发现我的代理控制器正在接收空白请求正文,并且第三方服务器正在发送错误,这是预期的,因为请求正文未传递。但是,在 chrome 浏览器开发工具中检查我的 ajax 调用时,我可以看到请求有效负载具有请求正文。但是当我检查控制器中的请求正文参数时,它显示为空白。那么,为什么请求正文在浏览器和控制器之间间歇性地被遗漏呢?
Ajax 请求:
$.ajax({
type: 'POST',
url: webApiPath + '/search',
contentType: 'application/json',
beforeSend: authentication.beforeSend,
dataType: 'json',
data: JSON.stringify(requestObj),
})
我的springboot代理控制器:
@RequestMapping("/**")
public @ResponseBody JsonResponse proxy(
@RequestBody(required = false) String body,
HttpMethod method, HttpServletRequest request)
throws URISyntaxException
{
// Do further stuff if body is not blank
RestTemplate template = new RestTemplate();
ResponseEntity<Object> original = template.exchange(
url, method, httpEntity, Object.class);
response.setSuccess(original.getBody());
}
Spring Boot 版本:发布 2.2.5
jQuery版本:v3.2.1
Java 版本 : 1.8
Chrome 版本:版本 98.0.4758.82(官方版本)(64 位)
答:
0赞
Vishwas Upadhyay
1/4/2023
#1
Spring boot 2.2.5 发布版附带的 tomcat 版本是 9.0.31。它已更新到 9.0.33 以解决我的问题。
评论