首页 > 解决方案 > 无法为 golang 的 fasthttp 框架设置 cookie

问题描述

我尝试使用 fasthttp 框架从服务器设置 cookie。但是响应标头中的 cookie 值设置不正确。我不知道我在下面的片段中错过了什么。

package main

import (
    "log"

    "github.com/valyala/fasthttp"
)

func main() {
    if err := fasthttp.ListenAndServe(":8080", requestHandler); err != nil {
        log.Fatalf("Error in ListenAndServe: %s", err)
    }
}

func requestHandler(ctx *fasthttp.RequestCtx) {
    switch string(ctx.Path()) {
    case "/foo":
        cook1 := fasthttp.Cookie{}
        cook1.SetKey("cookie_key")
        cook1.SetValue("cookie val")
        cook1.SetMaxAge(3600000)
        cook1.SetDomain("prabhakaran.com")
        cook1.SetPath(("/"))
        cook1.SetSecure(true)
        ctx.Response.Header.Cookie(&cook1)
        ctx.SetBody([]byte("this is completely new body contents"))

    case "/bar":
        //todo: Bar handler
        // ctx.SetBody([]byte("111111111111111111111"))
    default:
        ctx.Error("Unsupported path", fasthttp.StatusNotFound)
    }
}

我也尝试了 ctx.Response.Header.SetCookie(&cook1) API。但它不会起作用。有什么遗漏的片段吗?

标签: fasthttp

解决方案


ctx.Response.Header.Cookie(&cook1)

Cookie 函数用于查看 cookie 值。因此,使用SetCookie函数代替 Cookie。如果您在 http 协议中运行服务器,请删除cook1.SetSecure(true)语句。


推荐阅读