Spring Data REST的RepositoryPropertyReferenceController缺少OPTIONS端点?
关于RepositoryPropertyReferenceController缺失OPTIONS端点与CORS检查的问题
是的,这种情况确实会导致浏览器的基础CORS预检检查失败,具体原因和解决思路如下:
- 当浏览器发起涉及实体关系的跨域请求(比如PUT/POST到关系操作端点)时,会先自动发送OPTIONS预检请求,用于确认服务器是否允许该跨域操作的方法、头信息等。
- 由于
RepositoryPropertyReferenceController未实现OPTIONS端点,服务器会返回404状态码,浏览器会直接判定预检失败,进而阻止后续的实际业务请求发送。 - 其他Spring Data REST端点支持OPTIONS请求,是因为框架默认给这些端点配置了CORS处理逻辑,但
RepositoryPropertyReferenceController负责的关系操作端点大概率遗漏了这部分配置。
解决方向:
- 手动为
RepositoryPropertyReferenceController对应的关系路径添加CORS配置:可以通过在控制器类上添加@CrossOrigin注解,或者通过全局CORS配置类,明确允许OPTIONS请求及对应的跨域参数(如允许的源、方法、头信息)。 - 检查Spring Data REST版本:如果使用的是较旧版本,这可能是框架的已知遗漏问题,升级到最新稳定版后大概率会修复该端点的CORS支持。
内容的提问来源于stack exchange,提问作者loesak
相关产品推荐
相关产品推荐

