我正在尝试在需要身份验证(通过 Cookie 管理的登录令牌)的网站上启用 PWA。
我正在本地(http://localhost:4502)尝试此操作并登录(并发出登录cookie)网站。
问题是当请求 Web 应用清单时,请求中没有发送 Cookie,因此请求未通过身份验证。
<link rel="manifest" href="/content/site-x/manifest.json">
Run Code Online (Sandbox Code Playgroud)
如您所见,清单与包含它的网页使用相同的主机/方案。
对清单的请求是否传递了 cookie?我什至将我的登录 cookie 设置得尽可能宽松,但没有。cookie 是在所有其他请求(JS、CSS 等)上发送的——也许 localhost 有什么特别之处吗?或者它不是http?
我的本地 Node JS 测试服务器上的 Web 应用程序清单范围存在问题。我无法获得正确的范围,因为 IP 地址上的端口号妨碍了。我正在使用以下地址访问我的服务器:
https://192.168.0.101:2468/
Run Code Online (Sandbox Code Playgroud)
当我使用 Chrome 开发工具查看我的清单时,在“应用程序”选项卡下,它显示清单文件的 url 为::2468/manifest.json但:2468不是我的根文件夹中的目录。
我将所有文件保存在根目录中,包括server.js、manifest.json和索引,称为my-app.html
_ website-directory
|_ server.js
|_ manifest.json
|_ my-app.html
Run Code Online (Sandbox Code Playgroud)
在我的清单文件中,我有:
{
"scope": "./",
"start_url": "my-app.html"
}
Run Code Online (Sandbox Code Playgroud)
当我将代码上传到我的 Github Pages 站点时,一切正常:工作示例。我认为问题出在:2468我的 IP 地址后面。对于完全限定的域名,我不会遇到这个问题,就像我在 Github Pages 上遇到的那样。
如果我尝试将端口号放入清单的范围中,如下所示:
"scope": "./:2468/",
"start_url": "my-app.html"
Run Code Online (Sandbox Code Playgroud)
它破坏了我的清单的范围,我收到此警告:Manifest: property 'scope' ignored. Start url should be within scope of scope URL.这非常有道理,因为:2468它不是我的目录中的文件夹。这只是 Chrome 决定附加到我的清单文件的 URL 上的东西。
如何解析清单文件的范围以忽略端口号?为什么 Chrome …
scope localserver progressive-web-apps manifest.json web-app-manifest