繁体   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