gpt4 book ai didi

Swift Vapor Cookies 不工作

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:13 25 4
gpt4 key购买 nike

我正在尝试创建 cookie,但我在浏览器中没有看到任何 cookie。取而代之的是,我在 Postman 上得到了不同的输出,在 Chrome 浏览器上得到了不同的输出。

blow 是我编写 cookie 的方式。

  1. 创建路线

    drop.get("create", handler:createCookie)
  2. 处理程序

    func createCookie(request: Request) throws -> ResponseRepresentable {

    let cookie = Cookie(name: "login", value:"value", expires: generateExpirationDate(), secure: true)
    request.cookies.insert(cookie)

    return "Done"
    }
  3. 下面是创建过期处理器的函数

     func generateExpirationDate() -> Date {
    return Date() + (60 * 1) // 1 Minutes later
    }

在 post man 中我得到一个名为“vapor-sessions”的 cookie enter image description here

在 chrome 浏览器中,我得到了两个 cookie,如下图所示。 enter image description here

但是没有我想要的。 !!!!!!

编辑:

我也试过下面的代码,但 Postman 没有运气,但是这个“在 chrome 中工作”,我怀疑其他浏览器 !!!!

func createCookie(request: Request) throws -> ResponseRepresentable {

let cookie = Cookie(name: "login", value:"value", expires: generateExpirationDate(), secure: true)

let response = try Response(status: .ok, json: JSON(node: [
"yo": "yoyo"
]))

response.cookies.insert(cookie)


return response
}

最佳答案

您的预编辑代码不起作用,因为您将 cookie 添加到请求,而不是响应。响应是发送到浏览器的内容,因此这是设置 cookie 的正确位置。

这是一个完整的例子:

import Foundation
import Cookies
import HTTP
import Vapor

let drop = Droplet()

drop.get("create") { request in
let response = Response(status: .ok)
let expiry = Date(timeIntervalSinceNow: 60)
let cookie = Cookie(name: "login", value: "value", expires: expiry)
response.cookies.insert(cookie)
return response
}

drop.run()

使用curl查看Vapor发送的headers,可以清楚的看到cookie是在哪里设置的。

HTTP/1.1 200 OK
Set-Cookie: login=value; Expires=Sat, 14 Jan 2017 05:31:32 GMT; Path=/
Date: Sat, 14 Jan 2017 05:30:32 GMT
Content-Length: 0

关于Swift Vapor Cookies 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41634334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com