我正在将所有现有的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中的错误还是故意的行为被改变了?
2条答案
按热度按时间avkwfej41#
这被认为是一个安全漏洞,并且自Spring 6.0.0以来一直是预期的行为。请参阅issue。
voase2hg2#
@Valerji发布的答案是正确的。Spring的行为已经改变,以减轻安全漏洞。但是,如果您无法立即对调用端点的客户端(从用户界面,其他应用程序等)进行此更改,为了向后兼容,可以对应用配置进行以下更改:
字符串
**请注意:**最好尽快对所有客户端进行更改,并使用默认配置。