簡體   English   中英

Swift蒸氣餅干不起作用

[英]Swift Vapor Cookies not working

我正在嘗試創建cookie,但我沒有在瀏覽器中看到任何cookie。 而不是我在Postman上得到不同的輸出和chrome瀏覽器上的不同輸出。

打擊是我編寫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來創建過期處理程序

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

在郵政人員我得到一個名為“蒸汽會議”的餅干 在此輸入圖像描述

在Chrome瀏覽器中,我得到兩個cookie,如下圖所示。 在此輸入圖像描述

但是我想要的那個不存在。 !!!!!!!

編輯

我也試過下面的代碼,但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添加到request ,而不是response 響應是發送到瀏覽器的內容,因此這是設置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發送的標頭,您可以清楚地看到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

在本地環境中,cookie沒有運行,我和Postman有同樣的問題,你可以試試真實的環境,比如使用Heroku,它是免費的。

也許你測試使用Postman應用程序Interceptor Cookies插件的cookie

這段代碼對我有用,我正在使用中間件控制器來設置cookie。

let auth = AuthMiddleware(user: User.self) { value in
        return Cookie(
            name: "your_cookie_name",
            value: value,
            expires: Date().addingTimeInterval(60 * 60 * 5), // 5 hours
            secure: true,
            httpOnly: true
        )
    }
    drop.middleware.append(auth)

我希望我一直很有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM