firebase 脚本资源位于重定向的后面,这是不允许的

qncylg1j  于 2023-11-21  发布在  其他
关注(0)|答案(3)|浏览(81)

我正在实现Firebase消息传递,但我在Chrome中的控制台上出现错误。
脚本资源位于重定向的后面,这是不允许的。/firebase-messaging-sw. js无法加载资源:net::ERR_UNSAFE_REDIRECT
文件/firebase-messaging-sw. js在公共文件夹中,我正在使用FCM安装,如下所示https://github.com/firebase/quickstart-js/tree/master/messaging
但是授权链接是一个类似https://09029e3f.ngrok.io/admin/pt/settings/notifications的链接。但是主网站是在main.domain.com上。

lpwwtiir

lpwwtiir1#

Firebase Answer及其工作
默认情况下,service worker脚本(firebase-messaging-sw.js)应该位于应用程序的绝对路径上。使用快速入门项目,位置将为http://localhost:5000/firebase-messaging-sw.js
由于您正在使用不同的服务器存储静态文件,因此service worker脚本位置可能不相同或不正确。因此,我们需要更新service worker注册代码实现,并从不同的位置调用service worker脚本。
找到service worker脚本的静态位置。在我的例子中,它是http://localhost:5000/sw/firebase-messaging.sw.js,因为我将service worker脚本的位置移动到了sw文件夹中。要验证它是否可访问,尝试在浏览器地址栏中输入url,应该会显示service worker脚本代码。从https://www.gstatic.com/firebasejs//firebase.js本地下载firebase.js脚本,并将其命名为/firebase. js”>在需要显示通知的网页上。
更新firebase-messaging.js脚本。找到关键字firebase-messaging-sw.js和,然后添加路径作为前缀。在我的例子中,它是http://localhost:5000/sw/firebase-messaging-sw.jshttp://localhost:5000/sw/firebase-cloud-messaging-push-scope
谢谢firebase

2vuwiymt

2vuwiymt2#

您可以通过使用service worker手动加载firebase-messaging-sw.js来修复此问题。
假设你有两个文件:index.htmlfirebase-message-sw.js。它们在同一个位置。
1.在index.html中,加载firebase.js并初始化你的firebase应用:

<script src="https://www.gstatic.com/firebasejs/4.3.1/firebase.js"></script>
<script>
  var var config = {
        apiKey: YOUR_API_KEY,
        messagingSenderId: YOUR_SENDER_ID
    };
    firebase.initializeApp(config);
    navigator.serviceWorker.register('/firebase-messaging-sw.js')
      .then(function (registration) {
          messaging = firebase.messaging();

         //request permission for Push Message.
          messaging.requestPermission().then(function () {
              console.log('grant');

              messaging.getToken().then(function (currentToken) {
                 console.log('current token', currentToken);
            });
          }).catch(function(error) {
               console.log('Push Message is disallowed');
          })
      })
</script>

字符串
2.实施firebase-messaing-sw.js

importScripts('https://www.gstatic.com/firebasejs/4.3.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/4.3.1/firebase-messaging.js');
var config = {
    messagingSenderId: YOUR_SENDER_ID
};
firebase.initializeApp(config);
const messaging = firebase.messaging();

messaging.setBackgroundMessageHandler(function (payload) {
    console.log('[firebase-messaging-sw.js] Received background message ', payload);
    // Customize notification here
    const notificationTitle = 'Background Message Title';
    const notificationOptions = {
        body: 'Background Message body.',
        icon: '/firebase-logo.png'
    };

    return self.registration.showNotification(notificationTitle,
        notificationOptions);
});


搞定了!

6pp0gazn

6pp0gazn3#

我用的是下一个13,我用它来处理中间的衣服,就像这样:
第一个月

相关问题