我正在使用express-cors npm包,但无论如何都会这样做:
我尝试过公共路线:
// @ /routes/index.js
var cors = require('express-cors');
var express = require('express');
var router = express.Router();
// Set cross-origin rules
router.use(cors({
allowedOrigins: [
'*'
]
}));
// GET home page
router.get('/', function(req, res, next) {
res.render('index', { title: 'tol-node-public' });
});
module.exports = router;
我还尝试了一条私人路线,允许从我的网站访问:
// Set cross-origin rules
router.use(cors({
allowedOrigins: [
'https://*.mysite.*'
]
}));
但是在我的Ajax电话上:
$.ajax({
url: 'https://api.mysite.com/',
dataType: 'html',
type: 'GET',
success: function (res) {
console.log( "NODE SERVER STATUS: " + JSON.stringify(res) );
},
error: function (xhr, status, errThrown) {
if (DEBUG) console.log( "**ERR @ CheckNodeStatus: " + JSON.stringify(res) );
}
});
我因为没有CORS而得到错误,因此拒绝访问。我该如何修复我的CORS?我还是Node的新人。
答案 0 :(得分:0)
之前我没有使用npm express-cors
,但我使用了npm cors
,所以我只能讨论如何使用它。
设置:
npm i -S cors
index.js:
// @ /routes/index.js
var cors = require('cors');
var app = require('express')();
// Allow all
app.use(cors());
// GET home page
app.get('/', function(req, res, next) {
res.render('index', { title: 'tol-node-public' });
});
module.exports = router;
或者在特定路线上设置特定的api(在这种情况下是根路线):
var corsOptions = {
origin: 'https://api.mysite.com/',
optionsSuccessStatus: 200
};
app.get('/', cors(corsOptions), function(req, res, next){
res.render('index', { title: 'tol-node-public' });
});
使用此软件包还有许多其他选项。