【Cookie】浏览器的响应标头有 Set-Cookie,而没有存储到浏览器的应用(Application)下的 Cookie中

问题的原因应该是:localhost与127.0.0.1混用了!!!

问题详情:

在使用Gin写Go项目时,通过Swagger接口文档进行简单测试时,发现服务器端成功设置的SetCookie已经响应至浏览器端,在浏览器的“响应标头”中也看到了服务器设置的Set-Cookie,但是Set-Cookie中的内容并没有存储到浏览器的应用(Application)下的Cookie中,导致浏览器再次请求服务器时,服务器端无法获取到之前已设置的Cookie。

下图可以看到“浏览器的响应标头中的Set-Cookie”:

而浏览器的应用(Application)下的Cookie中没有内容

通过一系列的分析,发现了问题的原因应该是:localhost与127.0.0.1混用了!!!

我的问题出在了这里,我通过 127.0.0.1 访问的 Swagger 文档,而 Swagger 文档中请求服务端的接口要求使用的是 localhost,

打开F12 可以看到调用接口后的请求标头中Origin是127.0.0.1

问题解决:

把通过 127.0.0.1 访问的 Swagger 文档换成了 localhost 访问

然后调用对应的接口,可以看到请求标头中的Origin已经是localhost

此时,在应用下的Cookie中已经成功存储了服务器端响应的cookie。

总结:在设置Cookie时,Origin表示请求的来源域名,它通常与当前网页的域名相同,如果Origin与Access-Control-Allow-Origin不一致,将会导致跨域请求失败或出现安全问题。因此,在设置Cookie时,需要确保请求头中的Origin与Access-Control-Allow-Origin保持一致,以避免跨域问题。

(未完全搞明白 Origin 和 Access-Control-Allow-Origin)

猜你喜欢

转载自blog.csdn.net/weixin_41989013/article/details/133973583
今日推荐