使用 https FCM 时出现 SSL 错误

fir*_*ork 6 ssl

我已经使用 fcm 文档为 web 实现了 FCM。如果我将 url 设置为:' http://xxx ' 我没有错误,一切都会好起来的。但是当我设置 url : ' https://xxx ..' 时,出现错误:

“无法注册 ServiceWorker:获取脚本时发生 SSL 证书错误。” code: "messaging/failed-serviceworker-registration" "Messaging: 我们无法注册默认的 service worker。注册 ServiceWorker 失败:获取脚本时发生 SSL 证书错误。(messaging/failed-serviceworker-registration)。 ”

谁能告诉我如何解决这个错误?

tro*_*tze 12

当想要在没有适当 SSL 证书的本地开发环境中测试 Service Worker 时,这是一个普遍问题。它并不特定于 Firebase 消息传递,而是与一般的 Service Worker 相关。

这是我在使用 Google Chrome 时找到的解决方案:使用自签名证书在本地测试服务工作者

不幸的是,我还不知道如何解决其他浏览器的问题,但可能必须有类似的方法。

对于 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
Run Code Online (Sandbox Code Playgroud)

https://127.0.0.1这里就是你的应用程序(和服务人员)被本地托管的位置。如果在与标准 HTTPS 端口 443 不同的端口上提供服务,您可能需要调整它以使用适当的端口,例如https://127.0.0.1:3000,在端口 3000 上通过 HTTPS 为您的应用程序提供服务时。这--user-data-dir=/tmp/foo是启动新实例的必要条件,新用户profile,如果另一个 Chrome 实例已经在运行。

在 Windows 中(可能会有所不同,具体取决于 chrome.exe 所在的位置):

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:1123
Run Code Online (Sandbox Code Playgroud)

同样,您可能需要调整端口。

  • Windows 命令对我来说并不完全有效,但它确实有效:`"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin- as-secure=https://localhost:8443 --user-data-dir=C:\tmp` (特别是附加的 `--user-data-dir` 标志) (3认同)