Sicheres CORS-Handling mit next.js und Cloud-Funktionen
P粉106301763
P粉106301763 2024-03-29 11:35:12
0
1
461

Ich verwende next.js im Frontend und habe einen „api“-Ordner, der uns eine node.js-Umgebung auf der next.js-Serverseite bereitstellt.

Wir können eine Proxy-API zwischen Frontend und Backend haben (Cloud-Funktionen).

  1. Vom Frontend aus sende ich eine Anfrage an die next.js-API
  2. Anfrage von Next/API an Cloud-Funktion senden
  3. Erhalten Sie die Antwort im Frontend und senden Sie sie zurück

Ergebnis: CORS erhalten

Next.js API-Proxy-Code:

import { getFunctions, httpsCallable } from 'firebase/functions';

import { firebase } from '@/lib';

export async function deleteUserAccount(userId: string) {
  if (!userId) {
    console.error('deleteUserAccount: no userId provided');
    return;
  }

  try {
    const functions = getFunctions(firebase, 'us-central1');
    const deleteUserData = httpsCallable(functions, 'deleteUserData');

    const { data }: any = await deleteUserData({
      userId,
    });

    console.log('deleteUserAccount', data);
  } catch (error) {
    console.error('deleteUserAccount error', error);
  }
}

Dies ist die Cloud-Funktionsimplementierung:

const admin = require('firebase-admin');
const functions = require('firebase-functions');

exports.deleteUserData = functions.https.onRequest(async (req, res) => {
    const uid = request.auth.uid;
    
    try {
        await admin.auth().deleteUser(uid);
        return { message: 'Data deleted successfully!' };
    } catch (error) {
        console.error('Error deleting user data', error);
        return Promise.reject(error);
    }
});

Wie löst man CORS sicher?

P粉106301763
P粉106301763

Antworte allen(1)
P粉523335026

Firebase 存储库在两个示例中解释了 cors 的使用。您的问题已在此处得到解答 只需确保您使用此格式即可

{
origin:"https://your-site.name"
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage