AWS Cloud9 不允许静态 manifest.json 但允许 css 文件

AWS Cloud9 doesn't allow static manifest.json but does allow css file

我正在 AWS Cloud9 中开发 PWA,但它不允许我的 manifest.json 在 link 标签中成为 included/referenced。它在开发工具中说 "VFS Connection is not present" 好像找不到清单,因为它在应用程序外部。我在控制台中收到 499 错误。这与我停止节点 http-server 并重新加载预览页面时收到的消息相同,因为它没有在端口 8080 上提供。它确实在 link 中找到了 CSS 文件标签很好(在同一文件夹中),是因为它是 rel=manifest,还是出于安全原因或其他原因不允许包含 json 文件?有谁知道为什么这个文件不起作用?

<link rel="manifest" href="manifest.json" />

根据 MDN Web 文档,link 标签应该是这样的。

<link rel="manifest" href="/manifest.webmanifest">

这里是link我查到的信息。希望对你有帮助。

https://developer.mozilla.org/en-US/docs/Web/Manifest


PS : 我是 Whosebug 的新手,所以不能对这个问题发表评论,这就是为什么在答案本身中发布一些研究的原因。

这主要是因为目前您的应用程序无法在端口 80 上公开访问,一旦您上线应该不会有问题。

Update - Alternate method below

您可以将清单 json 内容作为 base64 编码字符串放入 html 本身。 下面是示例清单 json 及其在页面 link 标记中的实现。

{
  "name": "your app name",
  "gcm_sender_id": "xxxxxxx",
  "gcm_user_visible_only": "true"
}

在 HTML 页上 -

<link rel="manifest" href="data:application/manifest+json;base64,ewogICJuYW1lIjogInlvdXIgYXBwIG5hbWUiLAogICJnY21fc2VuZGVyX2lkIjogInh4eHh4eHgiLAogICJnY21fdXNlcl92aXNpYmxlX29ubHkiOiAidHJ1ZSIKfQ==">

这是因为对清单文件的请求是在不使用 cookies/credentials 的情况下完成的,但 VFS 代理使用 cookie 来限制对开发预览的访问。本质上,499 & 错误消息实际上意味着 access denied.

这个问题更笼统地描述了这个问题:

我已经确认这适用于 AWS cloud9 & Google Chrome 78.

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