Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
配置Spring数据REST以允许跨源请求_Spring_Kotlin_Cors_Spring Data Rest - Fatal编程技术网

配置Spring数据REST以允许跨源请求

配置Spring数据REST以允许跨源请求,spring,kotlin,cors,spring-data-rest,Spring,Kotlin,Cors,Spring Data Rest,我在Kotlin中建立了一个简单的Spring数据REST项目,其中包含两个@RepositoryRestResource注释存储库。我通过在Postman和浏览器中调用端点来验证它们是否工作正常。 现在,我正在将它连接到Vue前端,我正在使用CORS安全措施,而我似乎找不到允许使用正确来源的方法 我已经在Spring的Github和博客上尝试了这里提到的所有修复,但我似乎做错了什么。我的代码如下所示: 应用程序: @SpringBootApplication @EnableConfigurat

我在Kotlin中建立了一个简单的Spring数据REST项目,其中包含两个@RepositoryRestResource注释存储库。我通过在Postman和浏览器中调用端点来验证它们是否工作正常。 现在,我正在将它连接到Vue前端,我正在使用CORS安全措施,而我似乎找不到允许使用正确来源的方法

我已经在Spring的Github和博客上尝试了这里提到的所有修复,但我似乎做错了什么。我的代码如下所示:

应用程序:

@SpringBootApplication
@EnableConfigurationProperties(MyProperties::class)
class MyApplication

fun main(args: Array<String>) {
    SpringApplication.run(MyApplication::class.java, *args)
}
@springboot应用程序
@EnableConfigurationProperties(MyProperties::class)
类MyApplication
趣味主线(args:Array){
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?
}
@CrossOrigin(“http://localhost:8081,maxAge=3600)
@存储资源
接口存储库:crudepository{
有趣的FindBytle(标题:字符串):歌曲?
有趣的findBySlug(slug:String):歌曲?
fun findAllByOrderByAddedAtDesc():Iterable
}
@交叉原点(“http://localhost:8081,maxAge=3600)
@存储资源
接口用户存储库:CrudRepository{
fun findByEmail(登录名:String):用户?
}
配置:

@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
    }
}
@配置
类网络配置{
@豆子
fun corsConfigurer():WebMVCConfiguer{
返回对象:WebMVCConfiguer{
覆盖公司名称(注册号:CorsRegistry){
registry.addMapping(“/api/**”)
.允许的来源(”http://localhost:8081/")
}
}
}
@豆子
有趣的repositoryRestConfigurer():repositoryRestConfigurer{
返回对象:RepositoryRestConfigurer{
覆盖fun配置RepositoryRestConfiguration(
配置:RepositoryRestConfiguration,
公司注册:公司注册
) {
corsRegistry.addMapping(“/api/**”)
.允许的方法(“*”)
.允许的来源(”http://localhost:8081/")
}
}
}
@豆子
fun corsFilter():FilterRegistrationBean{
val source=UrlBasedCorsConfigurationSource()
val config=corscoConfiguration()
config.allowCredentials=true
config.addAllowedOrigin(“http://localhost:8081/")
config.addAllowedHeader(“*”)
config.addAllowedMethod(“*”)
source.registerCorsConfiguration(“/**”,配置)
Valbean:FilterRegistrationBean=FilterRegistrationBean(CorsFilter(源))
bean.order=Ordered.HIGHEST\u优先级
返回豆
}
}
在最后一节课中,我添加了所有的解决方案,并向存储库中添加了@CrossOrigin注释,但到目前为止运气不佳。你知道我做错了什么吗