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

bweufnob  于 5个月前  发布在  Spring
关注(0)|答案(2)|浏览(60)

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

@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
public class TodosController {
    @GetMapping("/locations")
    public List<Integer> findAllCoordinates(){
        return List.of(10,15);
    }
}

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

avkwfej4

avkwfej41#

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

voase2hg

voase2hg2#

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

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configurePathMatch(PathMatchConfigurer config) {
        config.setUseTrailingSlashMatch(true);
    }

}

字符串

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

相关问题