angularjs cookie不会显示在chrome开发者工具中

rbpvctlc  于 2022-10-31  发布在  Angular
关注(0)|答案(3)|浏览(268)

我正在使用node/express服务器和angularjs作为前端。服务器设置了cookie,并在网络响应中正确显示。但cookie没有显示在chrome开发工具的资源选项卡中。出现这种情况的可能原因是什么?x1c 0d1x

gojuced7

gojuced71#

以下是实际上未设置有效Cookie的两个可能原因:
1.无效的过期时间-从浏览器的Angular 来看,Cookie在过去的某个时间过期
1.Cookie的无效域。假设您提供来自 example.com 的页面,但您的服务器尝试将Cookie设置为域 * google.com *
chrome开发工具中也可能有一个bug,不显示您的cookie,但您可以通过向服务器发出另一个请求来轻松检查,并查看服务器实际接收到了哪些cookie。

ocebsuys

ocebsuys2#

这可能是因为你的cookie是HTTPOnly认证cookie。除非你浏览本地主机,否则这些cookie不会显示在chrome中。

gg58donl

gg58donl3#

如果您确定cookie已经被设置并且正在被发送到服务器,但是您不能总是在开发者工具的cookies pane中看到它,* 请检查主机和路径是否都与浏览器中的当前URL匹配 *。有一个选项可能并不总是合适,那就是在cookie中显式设置Path=/,以匹配所有URL。

详细信息

当您在开发者控制台打开的情况下浏览您的站点时,Cookie窗格将仅显示与URL中的当前主机和路径匹配的Cookie。例如,如果您将Cookie设置为 * subdomain.example.com但当前位于 * example.com *,则 subdomain.example.com 的Cookie将不会显示。即使当前已设置。导航到 subdomain.example.com,您现在应该可以在控制台中看到它。
同样,假设您在 example.com/api 的Node应用程序没有在cookie中设置Path,而是自动设置为Path=/api。只有当您浏览到以 example.com/api/ 开头的页面时,这才会在控制台上可见。您在同一页面中的JavaScript代码,向 example.com/api 发送请求时,自然会包含此cookie。即使它在控制台上不可见,因为URL中的路径不同。
您可以在网站信息弹出窗口中看到所有cookie的域和路径。这通常是通过点击URL左侧的图标来完成的,例如,如果是HTTPS,则为挂锁。在cookie部分下,您可以看到一个类似于Opera下图的框,与其他浏览器类似。

记下所选Cookie的路径和域。

潜在解决方案

在cookie中显式设置Path=/.根据Set-Cookie MDN documentationPath=<path-value>
指示浏览器要发送Cookie标头所请求的URL中必须存在的路径。
正斜杠(/)字符被解释为目录分隔符,并且子目录也被匹配。例如,对于Path=/docs,

  • 请求路径/docs、/docs/、/docs/Web/和/docs/Web/HTTP都将匹配。
  • 请求路径/、/docsets、/fr/docs将不匹配。

在上面的引用中隐含的意思是,使用Path=/将匹配给定域中的所有URL。在使用此方法之前,您应该确定它适合您特定用例中的所有场景。

相关问题