【问题标题】:Cookies not sent with request for Web App manifest.jsonCookie 未随 Web 应用 manifest.json 请求一起发送
【发布时间】:2019-01-17 12:41:12
【问题描述】:

我正在尝试在需要身份验证(通过 Cookie 管理的登录令牌)的网站上启用 PWA..

我正在本地尝试 (http://localhost:4502) 并登录(并获得登录 cookie)以登录网站。

问题是在请求 Web App manifest 时,请求上没有发送任何 Cookie,因此请求没有经过身份验证。

<link rel="manifest" href="/content/site-x/manifest.json">

如您所见,清单是通过与包含它的网页相同的主机/方案提供的。

清单请求是否传递了 cookie?我什至将我的登录 cookie 设置为尽可能宽松,但没有。 cookie 在所有其他请求(JS、CSS 等)上发送——也许 localhost 有什么特别之处吗?或者它不是http?

【问题讨论】:

  • 从那以后你找到解决办法了吗?

标签: javascript cookies progressive-web-apps web-app-manifest


【解决方案1】:

根据https://developers.google.com/web/fundamentals/web-app-manifest/

对清单的请求是在没有任何凭据的情况下发出的(即使它在同一个域中),因此如果清单需要凭据,则必须在清单标记中包含 crossorigin="use-credentials"。

因此,为两个跨域添加 &lt;link rel="manifest" href="/manifest.json" crossorigin="use-credentials"&gt; 作为在清单请求中添加服务器 cookie

【讨论】:

  • 任何想法如何在 reactjs 构建中设置它而不修改构建的文件?手动为我工作,谢谢!
  • 在清单文件的响应中接受 set-cookie 的任何文档?
  • 仅供想要尝试此修复的人参考:您可以在 public/index.html 文件中手动添加 crossorigin 属性
【解决方案2】:

似乎有一个old a bug in chromium,这些年来应该已经修复了。也许您可以尝试使用ajax/fetch "/content/site-x/manifest.json" 和 requestHeader "Content-type: application/json",然后从中创建一个 Blob,然后调用 createObjectURL(Blob) 并将此 url 提供给 href?

还有,还有这个:

<link rel="manifest" href="/manifest.json" crossorigin="use-credentials">

我猜你的情况不会有帮助,因为你在同一个来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2021-05-29
    相关资源
    最近更新 更多