使用Go客户端接收和发送Cookie?

时间:2017-04-07 04:49:34

标签: cookies web go http-authentication

我希望我的Go应用程序通过网站进行身份验证,然后使用收到的cookie访问安全位置。以下卷曲示例说明了我正在尝试做的事情:

通过x-www-form-urlencoded向网站进行身份验证并保存Cookie。数据自动进行编码:

curl 'https://www.example.com/login' \
    --cookie-jar cookies.txt \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data 'user=USER NAME&pass=PASS'

现在,身份验证Cookie已保存在cookies.txt中,我只是将其发送到访问需要登录的页面:

curl 'https://www.example.com/profile' \
    --cookie cookies.txt

我不想在我的应用程序中将cookie存储在磁盘上,只在内存中存储,以便我可以在需要时使用它。

有没有人有一个如何在Go中实现这个目标的例子?

2 个答案:

答案 0 :(得分:0)

对于Golang,您可以Add a cookie发出请求,您也可以在发出网络请求后使用this函数获取Cookie。

答案 1 :(得分:0)

您会发现Golang的方法与Java中的方法非常相似。 确保您在登录处理程序中。 您只能使用SetCoookie函数

设置cookie
myCookie := http.Cookie{
    Name: "cookie Name",
    Value: "cookieValue",
  }

  http.SetCookie(w, &myCookie)

出于安全原因,建议将httpOnly标志添加到您的cookie。

httpOnly: true

此标志为true与HTTPS / HTTP无关。 它仅表示不允许脚本(仅HTTP请求),以防止跨站点脚本(XSS)攻击。 您从客户端存储cookie,然后在需要时调用cookie,并验证它是否是正确的cookie,以及您是否将其发送给正确的客户端。 这种方法可以使用:

cookie, err := r.Cookie("appointment")
checkErr(err)

现在,您解密cookie。验证一下。做任何你想做的事。 然后将您的回复返回给客户(如果它不是合适的客户)。 希望这种帮助