Ktor 响应标头显示 Set-Cookies 为空

问题描述 投票:0回答:1

我正在制作一个 Gradle KotlinJS 应用程序,并且我是 Kotlin 的新手。我正在使用 Ktor ping API 进行登录,通过查看浏览器记录,我在标头中收到了作为 Set-Cookie 的返回令牌。 “_backend_session=...”

但是,当我尝试使用提供的函数 res.SetCookie() 获取此 SetCookie 时,我得到一个空列表。我尝试了各种从标题等获取它的方法,但是当我记录它们时,标题似乎特别空,我不明白为什么。

我的代码:

suspend fun login(username: String, password: String): Pair<HttpStatusCode, Json> {
    val client = HttpClient(Js) {
        install(HttpCookies)
        install(ContentNegotiation) { json(Json) }
    }
    val userData = User(user = UserData(username = username, password = password))

    val response: HttpResponse = client.post("$backend/users/sign_in") {
        headers {
            append(HttpHeaders.AccessControlAllowOrigin, "*")
            append("response_type", "code")
        }
        contentType(ContentType.Application.Json)
        setBody(userData)
    }

    console.log(response.setCookie())

    return Pair(response.status, JSON.parse(response.body()))
}
kotlin gradle httpresponse ktor response-headers
1个回答
0
投票

如果您在浏览器环境中运行代码,则浏览器会阻止前端 Javascript 代码访问

Set-Cookie
标头:

来自 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

警告:浏览器阻止前端 JavaScript 代码访问 Set-Cookie 标头,根据 Fetch 规范的要求,该规范将 Set-Cookie 定义为禁止的响应标头名称,必须从暴露给前端代码的任何响应中过滤掉该名称。

© www.soinside.com 2019 - 2024. All rights reserved.