我使用fcm文档为web实现了FCM。 如果我将网址设置为:' http://xxx'那么一切都会好起来的。我没有错误。 但是当我设置网址:' https://xxx ..'时,我收到错误:
"无法注册ServiceWorker:获取脚本时发生SSL证书错误。" 代码:"消息传递/失败 - serviceworker-registration" "消息:我们无法注册默认服务工作者。无法注册ServiceWorker:获取脚本时发生SSL证书错误。 (消息/失败-serviceworker注册)"
有人可以告诉我如何修复此错误吗?
答案 0 :(得分:2)
当想要在没有适当SSL证书的本地开发环境中测试服务工作者时,这是一个普遍问题。它不是特定于Firebase Messaging,而是与服务工作者有关。
以下是我在使用Google Chrome时找到的解决方案:Testing Service workers locally with self-signed certificates
不幸的是,我还不知道如何在其他浏览器中传播问题,但可能必须采用类似的方式。
对于Chrome,您需要启动Chrome的新实例,并使用一些标志告知其忽略本地源的SSL证书错误:
在Linux(也许是Mac)中:
google-chrome --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://127.0.0.1 --user-data-dir=/tmp/foo
此处https://127.0.0.1
是您的应用(和服务工作者)在本地托管的位置。如果在与标准HTTPS端口443不同的端口上提供服务,则可能需要对此进行调整以使用适当的端口,例如: {3000}在端口3000上通过HTTPS提供应用时的https://127.0.0.1:3000
。
如果另一个Chrome实例已在运行,则--user-data-dir=/tmp/foo
是使用新用户个人资料启动新实例所必需的。
在Windows中(可能因chrome.exe的位置而异):
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:1123
同样,您可能需要调整端口。