Firebase Hosting riserva gli URL del tuo sito che iniziano con /__. Questo
spazio dei nomi riservato semplifica l'utilizzo di altri prodotti Firebase insieme a
Firebase Hosting.
Questi URL riservati sono disponibili sia quando esegui il deployment su Firebase (firebase deploy) sia quando esegui l'app su un server locale (firebase serve).
Aggiungere script per gli URL riservati
Poiché Firebase Hosting viene pubblicato tramite HTTP/2, puoi migliorare le prestazioni caricando i file dalla stessa origine. Firebase Hosting pubblica la versione 8 dell'Firebase JavaScript SDK da URL speciali formattati come segue:
/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js
Ti consigliamo vivamente di caricare solo le librerie che
utilizzi nella tua app. Ad esempio, per includere solo Authentication e
Cloud Firestore, aggiungi i seguenti script in fondo al tag <body>, ma prima di utilizzare qualsiasi servizio Firebase:
<body>
<!-- Insert these scripts at the bottom of the HTML, but before you use any Firebase services -->
<!-- Firebase App (the core Firebase SDK) is always required and must be listed first -->
<script src="/__/firebase/8.10.1/firebase-app.js"></script>
<!-- Add Firebase products that you want to use -->
<script src="/__/firebase/8.10.1/firebase-auth.js"></script>
<script src="/__/firebase/8.10.1/firebase-firestore.js"></script>
</body>
Configurazione automatica dell'SDK
La configurazione automatica dell'SDK semplifica la gestione di più ambienti (ad esempio sviluppo, gestione temporanea e produzione) da un'unica codebase. Affidandoti all' URL Hosting riservato, puoi eseguire il deployment dello stesso codice in più progetti Firebase.
Oltre a ospitare gli SDK stessi, lo spazio dei nomi riservato fornisce anche tutta la configurazione necessaria per inizializzare l'SDK per il progetto Firebase associato al sito Hosting. Questa configurazione di Firebase e l'inizializzazione dell'SDK sono fornite da uno script che puoi includere direttamente:
<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>
Quando esegui il deployment su Firebase o testi l'app in locale, questo script configura automaticamente l'Firebase JavaScript SDK per il progetto Firebase attivo e inizializza l'SDK.
Se preferisci controllare l'inizializzazione, i valori di configurazione di Firebase sono disponibili anche in formato JSON:
fetch('/__/firebase/init.json').then(async response => {
firebase.initializeApp(await response.json());
});
SDK Firebase JS disponibili (da URL Hosting riservati)
Hosting| Prodotto Firebase | Riferimento alla libreria (URL riservato) |
|---|---|
| Firebase core (obbligatorio) |
<script src="/__/firebase/8.10.1/firebase-app.js"></script> |
| Analytics | <script src="/__/firebase/8.10.1/firebase-analytics.js"></script> |
| App Check | <script src="/__/firebase/8.10.1/firebase-app-check.js"></script> |
| Authentication | <script src="/__/firebase/8.10.1/firebase-auth.js"></script> |
| Cloud Firestore | <script src="/__/firebase/8.10.1/firebase-firestore.js"></script> |
| Cloud Functions for Firebase Client SDK | <script src="/__/firebase/8.10.1/firebase-functions.js"></script> |
| Firebase installations | <script src="/__/firebase/8.10.1/firebase-installations.js"></script> |
| Cloud Messaging | <script src="/__/firebase/8.10.1/firebase-messaging.js"></script> Per un'esperienza ottimale con Cloud Messaging, aggiungi anche l'SDK Firebase per Analytics. |
| Cloud Storage | <script src="/__/firebase/8.10.1/firebase-storage.js"></script> |
|
Performance Monitoring
(versione beta) |
<script src="/__/firebase/8.10.1/firebase-performance.js"></script> |
| Realtime Database | <script src="/__/firebase/8.10.1/firebase-database.js"></script> |
| Remote Config
(versione beta) |
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script> Per un'esperienza ottimale con Remote Config, aggiungi anche l'SDK Firebase per Analytics. |
| Firebase JavaScript SDK (SDK completo) |
<script src="/__/firebase/8.10.1/firebase.js"></script> |
Helper di autenticazione
Firebase Authentication utilizza lo spazio dei nomi riservato per fornire JavaScript e HTML speciali per completare l'autenticazione con i provider tramite OAuth. In questo modo, ogni progetto Firebase può avere un sottodominio Firebase univoco, aumentando la sicurezza di Firebase Authentication.
Inoltre, puoi utilizzare il tuo dominio personalizzato per l'opzione authDomain di firebase.initializeApp(). Se
configuri un dominio personalizzato
per Firebase Hosting, puoi anche specificare quel dominio personalizzato (anziché
il sottodominio web.app o firebaseapp.com) durante l'inizializzazione degli
SDK Firebase. Per maggiori dettagli sull'utilizzo di un dominio personalizzato, consulta le
best practice per l'utilizzo di signInWithRedirect.
URL riservati e service worker
Se stai creando un'app web progressiva (PWA), potresti creare un service worker con un "fallback di navigazione" che esegue il rendering di un URL specifico per impostazione predefinita se non corrisponde a un elenco di elementi prememorizzati nella cache.
Se utilizzi la libreria sw-precache, puoi aggiungere un'impostazione di elenco consentito di fallback di navigazione che esclude lo spazio dei nomi riservato:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
In generale, ricorda che lo spazio dei nomi con doppio trattino basso è riservato all'utilizzo di Firebase e che non devi intercettare queste richieste nel service worker.