在 Firebase 托管中启用 CORS
Enabling CORS in Firebase Hosting
我的 CORS 和我的 Google 云功能有这个非常烦人的问题...
我得到的错误是:
来自来源“http://localhost:4200”的 [我的函数 URL] 对 XMLHttpRequest 的访问已被 CORS 策略阻止:请求 header飞行前响应中的 Access-Control-Allow-Headers 不允许字段 access-control-allow-origin。
我已经尝试使用以下代码在函数端处理它:
if request.method == 'OPTIONS':
headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': '3600'
}
return ('', 204, headers)
然后在主 return 中添加:
headers = {
'Access-Control-Allow-Origin': '*'
}
....
return(json.dumps(data), 200, headers)
这行不通....
我也尝试过 firebase.json header 的方法,但也没有用...
甚至像这样尝试使用 angular 中的 HttpHeaders:
const headers = new HttpHeaders()
.set("Access-Control-Allow-Origin", "*")
.set("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
.set('cache-control', 'no-cache')
也不行.....
然后我尝试使用代理(只是为了检查这是否是实际问题)
添加了 proxy.config.json,当然在开发中它可以正常工作...
但问题是,我需要能够将 Angular 应用程序上传到 firebase 托管,那么我该如何修复后端的 CORS 错误?
消除 cors 错误的最简单方法之一是使用可调用函数。他们也有用户上下文。这真的很有用。
但是如果你想创建一个api。我建议使用 express 和 cors 包。这是我使用的代码:
import * as express from 'express';
import * as cors from 'cors';
const app = express();
// cors middleware handles all the cors related issues.
app.use(cors({ origin: '*' }));
// you can add your routes in your app.
app.use('/users', usersRoute);
export const api = functions.https.onRequest(app);
现在已经解决了,问题:
我在云功能(服务器端)和 webApp 端都有 CORS headers,这在某种程度上是不允许的,所以我只是从 webapp 端删除了代码,只把代码留在了云功能(服务器端)这解决了问题...
感谢大家!
我的 CORS 和我的 Google 云功能有这个非常烦人的问题...
我得到的错误是:
来自来源“http://localhost:4200”的 [我的函数 URL] 对 XMLHttpRequest 的访问已被 CORS 策略阻止:请求 header飞行前响应中的 Access-Control-Allow-Headers 不允许字段 access-control-allow-origin。
我已经尝试使用以下代码在函数端处理它:
if request.method == 'OPTIONS':
headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': '3600'
}
return ('', 204, headers)
然后在主 return 中添加:
headers = {
'Access-Control-Allow-Origin': '*'
}
....
return(json.dumps(data), 200, headers)
这行不通....
我也尝试过 firebase.json header 的方法,但也没有用...
甚至像这样尝试使用 angular 中的 HttpHeaders:
const headers = new HttpHeaders()
.set("Access-Control-Allow-Origin", "*")
.set("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
.set('cache-control', 'no-cache')
也不行.....
然后我尝试使用代理(只是为了检查这是否是实际问题) 添加了 proxy.config.json,当然在开发中它可以正常工作...
但问题是,我需要能够将 Angular 应用程序上传到 firebase 托管,那么我该如何修复后端的 CORS 错误?
消除 cors 错误的最简单方法之一是使用可调用函数。他们也有用户上下文。这真的很有用。
但是如果你想创建一个api。我建议使用 express 和 cors 包。这是我使用的代码:
import * as express from 'express';
import * as cors from 'cors';
const app = express();
// cors middleware handles all the cors related issues.
app.use(cors({ origin: '*' }));
// you can add your routes in your app.
app.use('/users', usersRoute);
export const api = functions.https.onRequest(app);
现在已经解决了,问题:
我在云功能(服务器端)和 webApp 端都有 CORS headers,这在某种程度上是不允许的,所以我只是从 webapp 端删除了代码,只把代码留在了云功能(服务器端)这解决了问题...
感谢大家!