我在浏览器中运行Cordova应用程序,我希望从另一个端口(Express)上运行的服务器获取Fetch API的一些数据。我允许使用CORS:
app.options('*', (req, res) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
});
但是当我尝试获取数据时,我在浏览器控制台(Safari)中收到此错误;
Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.
这是整个索引文件:
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const helmet = require('helmet');
const compression = require('compression');
const paths = require('./conf/paths');
const routes = require(paths.controllers.routes);
app.options('*', (req, res) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
});
app.use(helmet());
app.use(compression());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.get('/test', routes.users.login);
app.listen(3000);
我的路线只是发回JSON数据;
const db = require('../conf/db');
const hash = require('../helpers/hash');
const paths = require('../conf/paths');
const User = require(paths.models.user).User;
module.exports = {
login: (req, res, next) => {
res.send(JSON.stringify({ result: 'test' }));
}
};
答案 0 :(得分:0)
我使用app.all
在相同的情况下取得了成功,但也可以使用app.use
,
app.all(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
答案 1 :(得分:0)
由于informations网站上的Enable CORS,问题已解决。
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});