spring - 配置 Spring Data REST 以允许跨域请求
问题描述
我在 Kotlin 中建立了一个简单的 Spring Data REST 项目,其中包含两个 @RepositoryRestResource 注释存储库。我通过调用 Postman 和浏览器中的端点来验证它们工作正常。现在我将它连接到 Vue 前端,我正在使用 CORS 安全措施,但我似乎无法找到允许正确来源的方法。
我已经尝试了这里提到的每一个修复,在 Spring 的 Github 和博客上,但我似乎做错了什么。我的代码如下所示:
应用:
@SpringBootApplication
@EnableConfigurationProperties(MyProperties::class)
class MyApplication
fun main(args: Array<String>) {
SpringApplication.run(MyApplication::class.java, *args)
}
存储库:
@CrossOrigin("http://localhost:8081", maxAge = 3600)
@RepositoryRestResource
interface SongRepository : CrudRepository<Song, Long> {
fun findByTitle(title: String): Song?
fun findBySlug(slug: String): Song?
fun findAllByOrderByAddedAtDesc(): Iterable<Song>
}
@CrossOrigin("http://localhost:8081", maxAge = 3600)
@RepositoryRestResource
interface UserRepository : CrudRepository<User, Long> {
fun findByEmail(login: String): User?
}
配置:
@Configuration
class WebConfiguration {
@Bean
fun corsConfigurer(): WebMvcConfigurer? {
return object : WebMvcConfigurer {
override fun addCorsMappings(registry: CorsRegistry) {
registry.addMapping("/api/**")
.allowedOrigins("http://localhost:8081/")
}
}
}
@Bean
fun repositoryRestConfigurer(): RepositoryRestConfigurer? {
return object : RepositoryRestConfigurer {
override fun configureRepositoryRestConfiguration(
configuration: RepositoryRestConfiguration,
corsRegistry: CorsRegistry
) {
corsRegistry.addMapping("/api/**")
.allowedMethods("*")
.allowedOrigins("http://localhost:8081/")
}
}
}
@Bean
fun corsFilter(): FilterRegistrationBean<*> {
val source = UrlBasedCorsConfigurationSource()
val config = CorsConfiguration()
config.allowCredentials = true
config.addAllowedOrigin("http://localhost:8081/")
config.addAllowedHeader("*")
config.addAllowedMethod("*")
source.registerCorsConfiguration("/**", config)
val bean: FilterRegistrationBean<*> = FilterRegistrationBean(CorsFilter(source))
bean.order = Ordered.HIGHEST_PRECEDENCE
return bean
}
}
在最后一堂课中,我添加了所有可用的解决方案,并且在存储库中添加了@CrossOrigin 注释,但到目前为止还没有运气。有什么想法我在这里做错了吗?
解决方案
推荐阅读
- python - Customizing columns for export to csv with BeautifulSoup4
- python - 附加功能包括一个列表
- reason - 错误:未找到或构建包原因反应
- python - 我怎么知道python中生成的随机数?
- python - Expand a dict containing list items into a list of dict pairs
- python - Twisted deferred 上的生成器回调
- python - Python Selenium:我无法单击此退出按钮
- c# - 在 ASP.NET MVC 中使用 AJAX 方法时使用 C# 控制器重定向到页面
- java - 如何在Java中获取整数数组列表的组合集合
- json - 如何在mysql表中保存[object Object]