所以我只是在Heroku上部署了我的应用程序.我有一个应用程序,其中前端向后端发送登录请求.但我无法摆脱Heroku端的CORS问题(本地端没有问题).

我的前台是https://yourclimbfrontend.herokuapp.com/

这就是我调整CORS的方式:

fun Application.configureHTTP() {
    install(CORS) {
        allowMethod(HttpMethod.Options)
        allowMethod(HttpMethod.Put)
        allowMethod(HttpMethod.Delete)
        allowMethod(HttpMethod.Get)
        allowMethod(HttpMethod.Patch)
        allowHeader(HttpHeaders.Authorization)
        allowHeader("cart_session")
        exposeHeader("cart_session")
        allowHeader("MyCustomHeader")
        allowHeader("X-Requested-With")
        allowHeader("X-HTTP-Method-Override")
        allowHeader("Content-Type")
        allowHeader("Authorization")
        allowHeader("Accept")
        allowHeader("Access-Control-Allow-Credentials")
        allowHeader("Accept")
        allowHeader("Access-Control-Allow-Origin")
        allowHost("https://yourclimbfrontend.herokuapp.com")
      //  allowHost("localhost:3000")'
       // anyHost()

    }
}

如果我开了localHost:3000,它就能在我的本地机器上运行;如果我开着anyHost(),它就能在Heroku端运行.但我读到过,一个人应该避免anyHost(),所以我try 只让https://yourclimbfrontend.herokuapp.com发送请求.

我是不是在allowHost里用错了链接?或者我需要额外的线路才能允许Heroku?

推荐答案

这可能不是直观的,但KTOR的CORS中间件expects you to specify the allowed hosts separately from the associated scheme(s).相应地,不是

install(CORS) {
  // omitted
  allowHost("https://yourclimbfrontend.herokuapp.com")
  // omitted
}
install(CORS) {
  // omitted
  allowHost("yourclimbfrontend.herokuapp.com", schemes = listOf("https"))
  // omitted
}

此外,您可以安全地从CORS配置中删除以下两行

allowHeader("Access-Control-Allow-Credentials")
allowHeader("Access-Control-Allow-Origin")

因为这两个标头是response个标头,不是request个标头.

Kotlin相关问答推荐

我如何测试一个可组合组件没有显示,但如果它不存在也接受?

如何为集成测试配置Gradle JVM测试套件?

用A*搜索算法解决特修斯和米诺陶尔难题

Kotlin .如何用从 1 到 90 的 5 个唯一数字填充列表中的每一行?

修改器的属性是什么,我需要更改以使角变圆且宽度更小?喷气背包组合

Lets plot Kotlin中的多轴比例

具有泛型类型的 Kotlin 密封接口不会为其子类型推断约束

Kotlin 从其他类调用成员扩展函数

`DataBindingUtil` 中的 `bind`、`inflate` 和 `setContentView` 有什么区别

无法解决:androidx.lifecycle:lifecycle-viewmodel-ktx:1.1.1

TextField maxLength - Android Jetpack Compose

变量后的Android问号

如何通过反射使用 Kotlin 对象

Kapt不适用于Android Studio 3.0中的AutoValue

在Kotlin中传递并使用函数作为构造函数参数

如何在kotlin语言中将字符转换为ascii值

如何从kotlin中的类实例化对象

@StringRes、@DrawableRes、@LayoutRes等android注释使用kotlin参数进行判断

Kotlin - 如果不为空,则使用修改后的 Obj props 覆盖 Obj props

Kotlin:访问 when 语句的参数