web-dev-qa-db-ja.com

Firebase Cloud FunctionでCorsを有効にする

私はいくつかのクラウド関数を記述してデプロイしましたAngularアプリケーションを使用してそれらのAPIをヒットしようとしていますが、このエラーが発生しています

Origin ' http:// localhost:42 'から 'xxxxxxxxxxxxxxxxxxxxxxxx'のXMLHttpRequestへのアクセスがCORSポリシーによってブロックされました:プリフライト要求への応答がアクセス制御チェックに合格しません:いいえ 'Access-Control- Allow-Origin 'ヘッダーがリクエストされたリソースに存在します。

私は私のクラウド機能でcorsを有効にする必要があることを知っていますが、これまでにそれを行ったことはありません。私はチェックしました this スレッドですが、corsを初期化する必要がある場所と、その依存関係をインストールする必要がある場所、およびクラウド関数でそれを有効にする必要がある場所について、少し混乱していますか?これが私のクラウド機能です

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


const admin = require("firebase-admin");

const bodyParser = require("body-parser");


admin.initializeApp();

const db = admin.firestore();

const usersCollection = db.collection("users");

exports.addUser = functions.https.onRequest((req, res) => {
    if (req.body.username != null && req.body.firstname != null && req.body.lastname != null && req.body.addr1 != null && req.body.addr2 != null || req.body.username != undefined && req.body.firstname != undefined && req.body.lastname != undefined && req.body.addr1 != undefined && req.body.addr2 != undefined ) {
        let docId = Math.floor(Math.random() * (99999 - 00000));
        let newUser = {
            "username": req.body.name,
            "firstname": req.body.firstname,
            "lastname": req.body.lastname,
            "addr1": req.body.addr1,
            "addr2": req.body.addr2,
        }
        usersCollection.add(newUser).then(snapshot => {
            res.send(200, {
                "message": "User was successfully created"
            })
        });


    } else {
        res.send(400, {
            "message": "All fields are required"
        })
    }
});
4
ahsan nissar

サーバー側でこれを試してください:_npm install cors_。次に、const cors = require('cors')({Origin: true});多分このリンクが役立ちます: Cloud Functions for FirebaseでCORSを有効にする また、プラグインを使用してブラウザーでCORSルールを無効にすることもできます(例:crome): https ://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl = en

0
Yurii