簡體   English   中英

發送身份驗證承載令牌時出現 Cors 策略錯誤 - node.js(谷歌雲函數)

[英]Cors Policy Error when sending Authentication Bearer token - node.js (Google cloud functions)

我正在嘗試通過 chrome 插件與我的雲功能進行通信。 如果我不在雲功能控制台中啟用身份驗證,則一切正常。 但是當我只啟用經過身份驗證的用戶時,我收到以下錯誤

對 XMLHttpRequest 的訪問已被 CORS 策略阻止:對預檢請求的響應未通過訪問控制檢查:請求的資源上不存在“Access-Control-Allow-Origin”標頭

我的 Ajax 代碼

 return new Promise((resolve, reject) => {

    $.ajax({
      url : API_ENDPOINT+'method4',
      method : 'POST',
      beforeSend: function (xhr) {
          xhr.setRequestHeader('Authorization', 'Bearer '+firebase.auth().currentUser._lat);
      },
      data : 'id='+id,
      success: function(data, textStatus, xhr) {
          console.log(data);
          resolve(data);
      },
      error: function(data, textStatus, xhr) {
          reject(data);
          console.log(data)
      },
  });

});

下面是我部署在雲函數上的函數代碼

exports.method4 = functions.https.onRequest((request, response) =>{

    response.set('Access-Control-Allow-Origin', 'chrome-extension://pcpjkilopmjdhcigjjndndibccdingcb');
    response.set('Access-Control-Allow-Credentials', 'true');

    if (request.method === 'OPTIONS') {

      // Send response to OPTIONS requests
      response.set('Access-Control-Allow-Methods', 'GET, POST');
      response.set('Access-Control-Allow-Headers', 'Authorization');
      response.set('Access-Control-Max-Age', '3600');
      response.status(204).send('');

    } else {

      if (request.method !== 'POST') {
        // Return a "method not allowed" error
        return response.status(405).end();
      }

      return response.send(request.body['id']);

    }
})

過去 2 天我一直堅持這個問題,不確定是什么導致了這個問題。 提前致謝。

您的問題似乎是因為您使用的 OPTIONS 方法。 正如您在此處看到的,Google 應用程序腳本網絡應用程序支持的唯一 HTTP 方法是 POST 和 GET,目前不支持 OPTIONS 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM