CORS不适用于Express服务器的Cordova应用程序

时间:2018-03-14 19:42:58

标签: cordova express cors

我在浏览器中运行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' }));
    }

};

2 个答案:

答案 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();
});