首页 > 解决方案 > 如何在golang中通过重定向发送cookie?

问题描述

我正在开发一个 api,在对用户进行身份验证后,我想通过一个包含 jwt 令牌的 cookie 将他重定向到主页。

我正在使用该http.Redirect功能,并且已经尝试过以下方法:

那是我与该http.SetCookie函数一起使用的代码,这是效果最好的代码:

strToken := CreateToken(user)
urlAuthRedirect := "https://komfy.now.sh"

cookie := http.Cookie{
    Name: "jwt-token",
    Value: strToken, 
}

http.SetCookie(resp, &cookie) 
http.Redirect(
    resp, // ResponseWriter
    req, // Request
    urlAuthRedirect, 
    http.StatusSeeOther)

如何将 cookie 从身份验证端点传递到主页?

标签: apihttpgocookies

解决方案


如果设置的 cookie 标头未指定路径,则浏览器默认路径为请求的路径。要使 cookie 在整个站点中可用,请将路径显式设置为“/”。

cookie := http.Cookie{
    Name: "jwt-token",
    Value: strToken, 
    Path: "/",
}

Cookies 不能跨域设置。如果问题中的身份验证处理程序不是从域 komfy.now.sh 提供的,则无法直接设置 cookie。解决方法是通过查询参数将令牌发送到目标域上的端点。该端点的处理程序设置 cookie 并可能重定向到最终 URL。


推荐阅读