Chrome上的Notification API需要一些信息

问题描述 投票:0回答:1

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

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)上的localhost(以及Firefox / Edge)。它只在我上传到godaddy时停止工作。它甚至从未要求允许来自godaddy的Chrome上的通知。如果我专门进入设置并添加URL以允许通知,则不起作用

-=-=-

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

此外,Web通知适用于非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>   
javascript
1个回答
0
投票

好的,经过大量测试后,它必须是SSL问题。尽管多个网站都说“网络通知” - 注意:不推送通知 - 不需要SSL,我在另一个stackoverflow问题中发现了这一点:

只有在出于安全考虑而尝试从域中的localhost,127.0.0.1或https运行时,通知api才有效。它将服务工作者文件保存在您的浏览器中,以便黑客或中间任何人可以轻易地破解该数据(如果未通过SSL加密)。因此,在实时网站中,您必须拥有SSL证书,但在本地计算机上,您可以使用任何服务器运行此证书。

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

这非常令人沮丧,因为它可以在没有SSL的Firefox和Edge中运行。

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

© www.soinside.com 2019 - 2024. All rights reserved.