Ktor - 当我开始指定主机时出现 CORS 错误

Posted

技术标签:

【中文标题】Ktor - 当我开始指定主机时出现 CORS 错误【英文标题】:Ktor - Getting CORS errors when I start to specify the host 【发布时间】:2021-12-19 13:41:17 【问题描述】:

我正在尝试将帖子发送到我的 api 和我已配置的后端:


    install(CORS)  
        method(HttpMethod.Options) 
        method(HttpMethod.Post)
        header(HttpHeaders.AccessControlAllowOrigin)
        header(HttpHeaders.AccessControlAllowHeaders)
        header(HttpHeaders.ContentType)
        allowNonSimpleContentTypes = true
        allowCredentials = true
        anyHost()
    

在前端我有

  const res = await fetch(url, 
    body: JSON.stringify(body),
    headers: 
      "Content-Type": "application/json"
    ,
    method: "POST"
  )

当我将 anyHost() 更改为 host("name.io") 时,我开始收到 CORS 错误 - 关于这是为什么的任何想法?

【问题讨论】:

CORS 标头中的主机必须与请求中的来源完全一致。因此,从您的host("name.io") 来看,至少缺少协议。即尝试host("https://name.io") 我试试看,谢谢! 【参考方案1】:

以防万一其他人需要帮助,这里是正确添加主机的方法:

host("publisher.glimpseportal.io", schemes = listOf("https"))

将https放在域前面会导致错误

【讨论】:

以上是关于Ktor - 当我开始指定主机时出现 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

Ktor 后端的 CORS 问题

将 ktor 应用程序部署到 Heroku 后出现日志错误

从我的本地主机客户端发出请求而没有 cors 错误

当我根据 DynDNS url 名称而不是 IP 发出 axios 请求时,为啥会出现 CORS 错误?

当我的目标是动态时如何解决 Rest API 的 CORS 错误

当我尝试使用 ktor 和 moshi 在服务器端解码 json 时,我得到“kotlinx/coroutines/io/ByteReadChannel”