簡體   English   中英

如何使用cors模塊修復此cors錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM