Go语言 set-cookie标头不起作用

rjee0c15  于 2023-03-16  发布在  Go
关注(0)|答案(4)|浏览(183)

我正在开发一个小型网站w/ Go,我试图从我的服务器设置一个cookie。
我在本地主机上运行服务器,127.0.0.1在端口5080上将www.example.com别名为subdomain-dev.domain.com
My当我收到POSTsubdomain-dev.domain.com:5080/login的响应时,我可以 * 看到 * set-cookie标头。

HTTP/1.1 307 Temporary Redirect
Location: /
Set-Cookie: myappcookie=encryptedvalue==; Path=/; Expires=Fri, 13 Sep 2013 21:12:12 UTC; Max-Age=900; HttpOnly; Secure
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Date: Fri, 13 Sep 2013 20:57:12 GMT

为什么Chrome或Firefox没有记录这个信息?在Chrome中,它不会显示在资源标签中。在FF中,我也看不到它。在以后的请求头中,我也看不到它。

ftf50wuq

ftf50wuq1#

看到cookie中的Secure字符串了吗?
是啊,我也是。不过要过几个小时。
如果设置了安全标志,请确保通过SSL(URL开头的https://)访问站点。
如果您在本地开发并且没有证书,请确保跳过该选项。

vd2z7a6w

vd2z7a6w2#

在我的例子中,我不得不在我的回答中加上这一点:

access-control-expose-headers: Set-Cookie

我发现here,我的设置Cookie头是无法访问我的客户端,除非我把它添加到暴露的头标头。希望这可以帮助别人!

ht4b089n

ht4b089n3#

发现相关的github问题响应cookie没有被发送,这很有帮助。
在我的例子中,我在https下运行react应用程序(使用mkcert工具),并进行跨源获取请求和获得响应。
1.为获取请求指定credentials: 'include'示例获取API

fetch('https://example.com', {
  credentials: 'include'
});

1.从服务器指定这些响应标头

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://localhost:3000

Access-Control-Allow-Origin标头具有我的react应用程序的url值。
1.添加以下属性设置Cookie标题Path=/; HttpOnly; Secure; SameSite=Noneusing http cookies
希望能对人有所帮助!

0pizxfdo

0pizxfdo4#

对于其他遇到这个问题的人,我需要做的一系列事情,以获得我的cookie(我碰巧使用fastapi-users在后端和js fetch api在前端):

  • 更改我的cors配置,使标头集不是“*”而是完全指定的(我从标准请求字段中提取)
  • 在后端配置中将cookie_samesite="none"添加到cookie传输
  • 在获取API中将credentials: 'include'添加到我的请求中

相关问题