Spring Boot Sping Boot v3.2.1迁移后Rest端点不工作

bweufnob  于 2024-01-06  发布在  Spring
关注(0)|答案(2)|浏览(140)

我正在将所有现有的Sping Boot 应用程序从版本2.7.4迁移到3.2.1
我有一个奇怪的观察,所有以/结尾的端点都不能从UI和postman post migration访问
例如,这是一个带有一个简单GET端点的现有控制器:

  1. @RestController
  2. @RequestMapping("/api/v1")
  3. @RequiredArgsConstructor
  4. public class TodosController {
  5. @GetMapping("/locations")
  6. public List<Integer> findAllCoordinates(){
  7. return List.of(10,15);
  8. }
  9. }

字符串
现在GET /api/v1/locations/不再匹配,并导致HTTP 404错误。
然而,GET /api/v1/locations工作。同样的问题也存在于其他端点。这是Sping Boot 3中的错误还是故意的行为被改变了?

avkwfej4

avkwfej41#

这被认为是一个安全漏洞,并且自Spring 6.0.0以来一直是预期的行为。请参阅issue

voase2hg

voase2hg2#

@Valerji发布的答案是正确的。Spring的行为已经改变,以减轻安全漏洞。但是,如果您无法立即对调用端点的客户端(从用户界面,其他应用程序等)进行此更改,为了向后兼容,可以对应用配置进行以下更改:

  1. @Configuration
  2. public class WebConfig implements WebMvcConfigurer {
  3. @Override
  4. public void configurePathMatch(PathMatchConfigurer config) {
  5. config.setUseTrailingSlashMatch(true);
  6. }
  7. }

字符串

**请注意:**最好尽快对所有客户端进行更改,并使用默认配置。

相关问题