我安装了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文件。
出什么问题了?
[+编辑] 我可以通过
获取js文件$.getScript('~/js/file.js');
但不是
$.get('~/js/file.js');
答案 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();
});