谷歌浏览器:DOMException:注册失败 - 显示空或丢失

Fab*_* H. 9 google-chrome manifest push-notification web-push pushpad

我正在尝试在我的网站上实现推送通知(使用Pushpad).因此我创建了一个"manifest.json",其中包含以下内容:

{
    "gcm_sender_id": "my_gcm_sender_id",
    "gcm_user_visible_only": true
}
Run Code Online (Sandbox Code Playgroud)

当然,我创建了一个有效的GCM帐户并拥有发件人ID

我把manifest.json放到我的根目录中,我也把这行添加到我的index.php中:

<link rel="manifest" href="/manifest.json">
Run Code Online (Sandbox Code Playgroud)

使用Firefox一切正常,我可以发送和接收推送通知(所以我认为清单包含工作正常),但Chrome无法正常工作......

控制台显示以下错误:

Uncaught (in promise) DOMException: Registration failed - manifest empty or missing
Run Code Online (Sandbox Code Playgroud)

我搜索谷歌很长一段时间,并尝试了我发现的一切,但没有任何作用.

我尝试了什么:

  1. 使用"Editor" 创建manifest.json并将其保存为类型All Types(因此没有隐藏的.txt文件)以及UTF-8 -Encoding.
  2. 重启了Chrome
  3. 清除Chrome的缓存,历史记录等

我真的希望有人可以帮助我.

小智 5

对我来说这是一个重定向。必须manifest.json返回 200 状态代码(必须可直接从服务器获取),而无需任何重定向。您可以通过以下方式检查响应

wget --max-redirect=0 https://example.com/manifest.json

或者

curl https://example.com/manifest.json


Fab*_* H. 0

因为我在 WWW 上没有找到答案,但在一段时间后设法让它工作,我想为可能有同样问题的其他用户提供我的解决方案/答案:

在我包含 Pushpad 文件的文件中,我在 -Tag 之前编写了一些 PHP 代码<head>以包含一些文件,例如用于数据库连接。在我将 PHP 代码移到<head>-Tag 下方后,一切正常。