1

버튼 (id = change)을 클릭하면 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);} 
    }); 
     }); 

는 HTTP 요청에 트리거 내 중포 기지 클라우드 기능입니다 클라이언트 측 코드에서 아약스 get 메소드입니다. 내 콘솔에 표시

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- 상태/성공 응답. 따라서 CORS 문제가 아니며 대신 서버 측에서 서버 로그를 확인하여 500 개의 내부 오류의 원인에 대해 어떤 메시지가 기록되는지 확인하십시오. – sideshowbarker

+0

그것은 admin.database.ref()가 함수가 아니라는 것을 말하는 유형 오류를줍니다. 함수가 아닌 방법을 얻지 못합니다. –

답변

1

크로스,이 같은 아약스를 사용해보십시오 도메인에 액세스하려면 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);} 
});