1

ボタン(ID =変更)をクリックすると、Admin SDKでhttpsトリガーされた機能を介してfirebaseリアルタイムデータベースに書き込もうとしています。XMLHttpRequestはcorsを使用した後でもfirebaseのクラウド関数のURLをロードできません

これは、下記のクライアント側のコード

$('#change').click(function(){ 
       $.ajax({ 
      url: 'https://<CLOUD FUNCTION URL>/verifyuser?uid='+user.uid, 
      type: "GET", 
      cache: false, 
      dataType: "text", 
      crossDomain: true, 
      success : function(result){console.log(result);}, 
      error : function(error){console.log(error);} 
    }); 
     }); 

でAjaxのgetメソッドですが、HTTP要求にトリガ私のfirebaseクラウド機能です。私のコンソールに表示

const functions = require('firebase-functions'); 
const admin=require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 
const cors=require('cors')({origin: true}); 
exports.verifyuser = functions.https.onRequest((req, res) => { 
    cors(req, res,() => { 
    const uid=req.query.uid; 

admin.database.ref('/tathva17/users/'+uid+'/hospitality').set(
{'status':'confirmed'}).then(function(){ 
    res.status(200).send("Success!"); 
}); 

}); 
}); 

エラー(ID = "変更")ボタンをクリックした後

enter image description here

エラーがログに見 enter image description here

+0

機能コンソールには何が記録されましたか? –

+1

* "応答にはHTTPステータスコード500があります" *は、CORS設定とは無関係の内部サーバー障害が実際の問題であることを示します。ブラウザにCORSエラーメッセージが表示される唯一の理由は、多くのサーバーは通常、500個の応答またはその他のエラー応答でAccess-Control-Allow-Originを送信せず、Access-Control-Allow-Origin ok-status/successレスポンスの場合したがってCORSの問題ではなく、代わりにサーバー側のサーバーログを調べて、500の内部エラーの原因についてどのメッセージがログに記録されているかを確認します。 – sideshowbarker

+0

admin.database.ref()が関数ではないというエラーが発生しました。関数ではありません。 –

答えて

1

クロスとして、このようなAJAXを使用してみてくださいドメインアクセスの場合、dataTypeをjsonpと設定する必要があります。

$.ajax({ 
     url: 'https://<CLOUD FUNCTION URL>/verifyuser?uid='+user.uid, 
     type: "GET", 
     cache: false, 
     dataType: "jsonp", 
     success : function(result){console.log(result);}, 
     error : function(error){console.log(error);} 
}); 
関連する問題