发送身份验证承载令牌时出现 Cors 策略错误 - node.js(谷歌云功能)
Posted
技术标签:
【中文标题】发送身份验证承载令牌时出现 Cors 策略错误 - node.js(谷歌云功能)【英文标题】:Cors Policy Error when sending Authentication Bearer token - node.js (Google cloud functions) 【发布时间】:2020-12-28 03:41:30 【问题描述】:我正在尝试通过 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 天我一直被这个问题困扰,不确定是什么导致了这个问题。提前致谢。
【问题讨论】:
【参考方案1】:您的问题似乎是因为您使用的 OPTIONS 方法。如您所见here,Google 应用脚本网络应用程序支持的唯一 HTTP 方法是 POST 和 GET,目前不支持 OPTIONS 方法。
【讨论】:
以上是关于发送身份验证承载令牌时出现 Cors 策略错误 - node.js(谷歌云功能)的主要内容,如果未能解决你的问题,请参考以下文章
在带有 CORS 的 REST 中使用 Spring 登录时出现问题
从 Spotify 请求访问令牌时出现错误“仅支持有效的不记名身份验证”
使用来自 Angular JS 的 Web API 令牌身份验证时出现错误请求 (400)
发送带有承载令牌授权标头 (flask_restful + flask_jwt_extended) 的 GET 消息时出现“段不足”