我目前正在学习如何为Firebase使用新的Cloud Functions,而我遇到的问题是我无法访问我通过AJAX请求编写的函数.我收到"No'Access-Control-Allow-Origin'"错误.这是我写的函数的一个例子:
exports.test = functions.https.onRequest((request, response) => {
response.status(500).send({test: 'Testing functions'});
})
Run Code Online (Sandbox Code Playgroud)
该函数位于以下URL:https: //us-central1-fba-shipper-140ae.cloudfunctions.net/test
Firebase文档建议在功能中添加CORS中间件,我已经尝试过但它对我不起作用:https://firebase.google.com/docs/functions/http-events
我就这样做了:
var cors = require('cors');
exports.test = functions.https.onRequest((request, response) => {
cors(request, response, () => {
response.status(500).send({test: 'Testing functions'});
})
})
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我很感激任何帮助.
更新:
道格史蒂文森的回答有所帮助.添加({产地:真})固定的问题,我也不得不改变response.status(500),以response.status(200)我在第一次完全错过.
当我使用该函数将数据添加到数据库时,并且在我添加的服务器上Access-Control-Allow-Origin,它不会被 CORS 阻止,但是当我查看浏览器控制台工具选项卡控制台时仍然出错
Access to XMLHttpRequest at 'https://int.goo.id/api/pg/sso.register' from origin 'http://127.0.0.1:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)
如何停用 CORS?
我有一个托管在使用 CanvasKit 渲染的 Firebase Hosting 上的 Flutter Web 项目,但我无法使其加载 Xano CDN 中托管的外部图像或加载 GooglePlaces API 结果(自动编译)。我阅读了许多其他解决方案(例如这个或这个或这个),但没有一个有效。我还在Google Cloud 上配置了 CORS。
这是我的firebase.json文件:
{
"hosting": {
"public": "build/web",
"ignore": [
"firebase.json",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"headers": [
{
"source": "*",
"headers": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
在 index.html 中,我在标签之前附加了以下脚本</body>:
<!-- Firebase -->
<script type="module">
// Import …Run Code Online (Sandbox Code Playgroud)