[英]How can I fix this cors error with cors module
我安裝了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');
Express中的服務器不允許您直接訪問文件。 如果您希望它直接啟用訪問文件。 你必須這樣做
app.use(express.static('public'))
現在您可以直接訪問公共文件夾中的文件,就像公共文件中是否存在data.json文件一樣,您可以通過localhost:3000 / data.json進行訪問。 希望這是您的問題的答案
嘗試以下操作后出現錯誤:
app.get('/', cors(), (req, res) => {
res.render('view');
});
和
$.getJSON('https://server.domain/global.json', cors(), data => {
console.log(data);
});
將cors模塊作為您加載(使用)的第一個模塊
我終於用下面的代碼解決了這個問題。
app.all('/*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
next();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.