【问题标题】:How to disable CORS completelly in Ktor?如何在 Ktor 中完全禁用 CORS?
【发布时间】:2021-10-24 10:38:51
【问题描述】:

我想用 Ktor 做一个非常基本的事情:添加以下配置:

    "Access-Control-Allow-Origin": "*"
    "Access-Control-Allow-Methods": "*"
    "Access-Control-Allow-Headers": "*"

我通过the CORS documentation of Ktor 并没有找到如何实现它。

以下配置适用于 GET 请求,但 POST 请求失败。

install(CORS) {
    anyHost()
}

通过我的 IDE 探索 API 并没有多大帮助。

问:如何在 Ktor 中完全禁用 CORS?

【问题讨论】:

  • 您可以尝试列出所有方法并使用allowHeadersPrefixed("")
  • 谢谢@dan1st。不幸的是,它没有帮助
  • doc 表示默认情况下,CORS 插件允许 GET、POST 和 HEAD HTTP 方法。所以理想情况下,这也适用于 POST。但你可以尝试在其中添加method(HttpMethod.Post)
  • 我只尝试了install(CORS) { anyHost() },它也适用于 POST。您能否详细说明您是如何测试 POST 请求以及它是如何失败的?
  • 我的问题是内容类型。在我的代码中,POST 请求指定内容类型,但 GET 请求不指定。这就是 POST 不起作用的原因。但问题仍然相关,我想完全禁用 CORS。

标签: kotlin cors ktor


【解决方案1】:

anyHost() 等价于 "Access-Control-Allow-Origin": "*"

allowHeaders { true } 等价于"Access-Control-Allow-Headers": "*"

HttpMethod.DefaultMethods.forEach { method(it) } 等价于"Access-Control-Allow-Methods": "*"

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 2017-11-25
    • 2017-11-25
    • 2020-02-02
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多