Проблема Access-Control-Allow-Origin в заголовке ktor cors - PullRequest
0 голосов
/ 23 января 2019

Я создаю простой REST API с использованием ktor и используемых cors, но когда я отправляю простой запрос get без данных заголовков, сервер работает нормально, но если я хочу, чтобы клиент сказал ключ: 1 сервер не отвечает мнеправильно, он говорит, что проблема в

Failed to load http://127.0.0.1:8080/test: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 403.

, поэтому вот мой код ktor

install(ContentNegotiation) {
        gson {
        }
    }
    install(ForwardedHeaderSupport)
    install(DefaultHeaders)
    install(CORS)
    {
        method(HttpMethod.Options)
        method(HttpMethod.Get)
        method(HttpMethod.Post)
        method(HttpMethod.Put)
        method(HttpMethod.Delete)
        method(HttpMethod.Patch)
        header(HttpHeaders.AccessControlAllowHeaders)
        header(HttpHeaders.ContentType)
        header(HttpHeaders.AccessControlAllowOrigin)
        allowCredentials = true
        anyHost()
        maxAge = Duration.ofDays(1)
    }
...
 get("test"){
            val a =  call.request.headers["key"]
            println(a)
            call.respond(Product(name = a))
        }

, и мой код javascript выглядит следующим образом ...

fetch('http://shop-ix.uz:8080/test', {
 headers: {
 "key": "1" 
})
   .then(response => response.json())
   .then(json => {    
     console.log(json);
   })

пожалуйста, помогите мне

1 Ответ

0 голосов
/ 04 марта 2019

Вам необходимо внести белый список в заголовки следующим образом:

install(CORS) {
  header("key")
}

Это нужно делать с каждым настраиваемым HTTP-заголовком, который вы собираетесь использовать.

...