Javascript 仅在浏览器上调用CORS阻止的我自己的Firbase函数
我得到一个错误:Javascript 仅在浏览器上调用CORS阻止的我自己的Firbase函数,javascript,node.js,firebase,google-cloud-functions,Javascript,Node.js,Firebase,Google Cloud Functions,我得到一个错误: Access to XMLHttpRequest at 'https://us-central1-myproject-64732.cloudfunctions.net/getProduct has been blocked by CORS 我的域名注册为example.com 编辑 我有: const cors = require('cors')({origin: true}); const rp = require('request-promise'
Access to XMLHttpRequest at 'https://us-central1-myproject-64732.cloudfunctions.net/getProduct has been blocked by CORS
我的域名注册为example.com
编辑
我有:
const cors = require('cors')({origin: true});
const rp = require('request-promise');
exports.getProduct = functions.https.onRequest((request, response) => {
const options = {
uri: url,
headers: {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': '*',
'Accept-Language': 'en-US,en',
"Access-Control-Allow-Origin":"*",
'Access-Control-Allow-Methods': 'GET, PUT, POST, OPTIONS',
'Access-Control-Allow-Headers': '*',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Referer': 'http://www.google.com/',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
rp(options)
.then(($) => { ...
存在我的访问控制允许原点
,而错误表示未显示
EDIT2
该功能在本地计算机和终端模拟器上使用时有效,但在浏览器中不起作用。请尝试以下操作:
import * as functions_ from 'firebase-functions';
// import * as firebaseHelper from 'firebase-functions-helper';
import * as express_ from 'express';
import * as bodyParser_ from "body-parser";
import News from './news.function';
import Meteo from './meteo.function';
const _cors = require('cors')({
origin: true,
});
let bodyParser = bodyParser_;
let express = express_;
let functions = functions_;
// const db = admin.firestore();
const app = express();
const main = express();
// YOUR API ROUTES
app.get('/news/', (req, res) => News(req, res));
app.get('/meteo/', async (req, res) => {
console.log('here');
Meteo(req, res)
});
main.use('/api/v1', app);
main.use(bodyParser.json());
main.use(bodyParser.urlencoded({ extended: false }));
// webApi is your functions name, and you will pass main as
// a parameter
export const webApi = functions.https.onRequest((req, resp) => {
_cors(req, resp, () => {
main(req, resp);
})
});
希望它能帮助你 对于任何挣扎的人,我都找到了解决办法
exports.getProduct = functions.https.onRequest((request, response) => {
cors(request, response, () => { // ****** thats solve it
const options = {
uri: url,
headers: { ......
rp(options)
.then(($) => { ...
添加cors请求使其工作。当然包括图书馆。
我还发现,当我部署单个函数时,它不会总是部署它,也不会产生一些奇怪的问题。非常感谢!你能看到我的编辑吗?我使用请求-承诺库。我想修复我的代码,但继续在cors中使用请求承诺:)我不确定,但尝试设置:_cors(req,resp,()=>{//这里是您的选项,等等。)谢谢,我仍在努力,不确定如何使用选项实现您的注释。