提问人:H Zaman 提问时间:10/22/2023 更新时间:10/23/2023 访问量:50
Ktor 响应标头显示 Set-Cookie 的 null
Ktor Response Headers showing null for Set-Cookies
问:
我正在制作一个 Gradle KotlinJS 应用程序,我是 Kotlin 的新手。我正在使用 Ktor ping 一个 API 来登录,通过查看浏览器记录,我在标头中收到作为 Set-Cookie 的返回令牌。“_backend_session=......”
但是,当我尝试获取此 SetCookie 时,使用提供的函数 res.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()))
}
答:
1赞
Aleksei Tirman
10/23/2023
#1
如果在浏览器环境中运行代码,则浏览器会阻止前端 Javascript 代码访问标头:Set-Cookie
来自 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie:
警告:浏览器会阻止前端 JavaScript 代码访问 Set-Cookie 标头,这是 Fetch 规范的要求,该规范将 Set-Cookie 定义为禁止的响应标头名称,必须从暴露给前端代码的任何响应中筛选出来。
评论
0赞
H Zaman
10/24/2023
谢谢!我忙于查找 ktor 文档,忘记查找 SetCookies。
评论