18

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

我正在本地尝试这个(http://localhost:4502)并为网站登录(并发出登录 cookie)。

问题是当请求 Web 应用清单时,请求上没有发送任何 Cookie,因此请求没有经过身份验证。

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

如您所见,清单与包含它的网页使用相同的主机/方案。

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

4

2 回答 2

34

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

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

因此,将<link rel="manifest" href="/manifest.json" crossorigin="use-credentials">跨域添加为在清单请求中添加服务器 cookie

于 2019-07-24T13:48:10.753 回答
1

铬中似乎有一个旧的错误,这些年来应该已经修复了。也许您可以尝试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">

我想在你的情况下这无济于事,因为你来自同一个起源。

于 2018-08-10T00:32:18.450 回答