【问题标题】:How to send cookie through redirection in golang?如何在golang中通过重定向发送cookie?
【发布时间】:2021-05-25 21:35:14
【问题描述】:

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

我正在使用http.Redirect 函数,并且我已经尝试了以下方法:

  • 将cookie设置到ResponseWriter并通过重定向功能发送,但它所做的只是在身份验证页面上设置cookie但它没有通过重定向传递它,因此主页没有收到它。

  • 将 cookie 添加到我第一次使用处理函数接收的请求中,并通过重定向函数重新发送它。这根本不起作用。

  • 创建一个新请求并再次通过重定向功能发送。这也行不通。

这是我与 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 从身份验证端点传递到主页?

【问题讨论】:

  • @CeriseLimón 好的,我会尝试路径提示。我用一些代码编辑了我的帖子,希望它现在更有用。

标签: api http go cookies


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2020-11-28
    • 2017-04-08
    • 1970-01-01
    • 2016-01-15
    • 2022-01-06
    • 2018-02-02
    相关资源
    最近更新 更多