如何使用cors模块修复此cors错误

时间:2019-02-20 11:36:26

标签: node.js npm cors

我安装了cors模块并按如下所示进行编码。

var express = require('express'),
    favicon = require('serve-favicon'),
    cors = require('cors');
var app = express();

if (app.get('env') === 'development') {
    app.locals.pretty = true;
}

app.set('view engine', 'pug');
app.set('views', './views');

app.use(express.static(__dirname + '/public'));
app.use(favicon(__dirname + '/public/img/logo.ico'));
app.use(cors());

app.get('/', (req, res) => {
    res.render('view');
});

app.listen(80, () => {
    console.log('Server started on port 80');
});

此后,我打开服务器并尝试通过此代码访问服务器上的文件。

$.getJSON('https://server.domain/global.json', data => {
    console.log(data);
});

但这会出错。

我可以访问js文件,但不能访问json文件。

enter image description here

出什么问题了?

[+编辑] 我可以通过

获取js文件
$.getScript('~/js/file.js');

但不是

$.get('~/js/file.js');

4 个答案:

答案 0 :(得分:0)

Express中的服务器不允许您直接访问文件。 如果您希望它直接启用访问文件。你必须这样做

app.use(express.static('public'))

现在您可以直接访问公用文件夹中的文件,例如 如果公共有data.json文件,则可以通过localhost:3000 / data.json访问它。 希望这是您的问题的答案

答案 1 :(得分:0)

尝试此操作后收到错误消息吗?

app.get('/', cors(), (req, res) => {
    res.render('view');
});

$.getJSON('https://server.domain/global.json', cors(), data => {
    console.log(data);
});

答案 2 :(得分:0)

将cors模块作为您加载(使用)的第一个模块

答案 3 :(得分:0)

我终于用下面的代码解决了这个问题。

app.all('/*', function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    next();
});