Chrome上的Notification API,需要一些信息

时间:2018-11-07 16:52:14

标签: javascript

我一直在使用此演示中的代码进行测试:

https://davidwalsh.name/demo/notifications-api.php

上面的演示可以完美地在Chrome,Firefox和Edge上运行。

我用他的演示制作了一个.aspx页面。基本上查看源代码复制/粘贴。我只添加了<Form..> </Form>,因此它可以在.aspx页中使用。当我上传到Godaddy时,它可以完美地在Firefox和Edge中运行,但在Chrome中无法运行。

有人建议从Godaddy使用Chrome的任何原因都不行吗? Javascript不是我的事,但是我找不到任何错误吗?

我的网站没有SSL会阻止通知正常工作吗?试图用谷歌搜索它,但是在与这个问题无关的切线上消失了。

谢谢

轻微更新。我的.aspx页也可以在Chrome(IIS Express)(和Firefox / Edge)上的localhost中运行。当我上传到Godaddy时,它才停止工作。它甚至从未要求允许Godaddy在Chrome上发送通知。如果我专门进入设置并添加URL以允许通知,则无法使用

-=-=-

最后一次编辑。这很难谷歌,因为在推送通知和网络通知之间似乎有很多相似的关键字。我正在做网络通知,但确实找到了这个:

此外,网络通知还可用于非SSL和SSL网站

这吹响了我的一个大理论……除非已经过时了。

几乎是核心代码...除我真正需要它工作的那个地方外,其他所有地方都可以使用

显示通知

<script type="text/javascript">
        function showNotification() {
            if(window.Notification) {
                Notification.requestPermission(function(status) { 
                    console.log('Status: ', status); 
                    var n = new Notification('Title', { body: 'I am the body text!' }); 
                });
            }
            else {
                alert('Your browser doesn\'t support notifications.');
            }
        }
    </script>   

2 个答案:

答案 0 :(得分:0)

好的,经过广泛的测试,必须是SSL问题。尽管多个网站都说“ Web Notifications”(请注意: Push Notifications)不需要SSL,但我在另一个stackoverflow问题中发现了这一点:

  

通知api仅在您出于安全考虑从域中的localhost,127.0.0.1或https运行时才起作用。它将服务工作者文件保存在您的浏览器中,这样,如果未通过SSL加密数据,则黑客或中间任何人都可以轻松地入侵该数据。因此,在实时网站中,您必须具有SSL证书,但是在本地计算机上,您可以使用任何服务器运行该证书。

该演示脚本确实可以在localhost(IIS Express)上运行,但不能在192.168.x.x上的IIS上运行

这非常令人沮丧,因为它可以在不使用SSL的Firefox和Edge中使用。

此外,用谷歌搜索这非常困难,因为看起来没有多少人使用Web Notications。大多数搜索结果会返回“推送通知”,这不是我正在使用的。

答案 1 :(得分:0)

你是对的。 Google Chrome浏览器希望您使用https://或localhost://来使推送通知生效。

如何绕过Chrome安全性: 对于本地开发,您可以使用unsafely-treat-insecure-origin-as-secure选项启动Chrome。

open -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
     --args \
     --user-data-dir=$HOME \
     --unsafely-treat-insecure-origin-as-secure=http://your-insecure-domain.dev \