我在这里真的没有知识;我在这个问题上搜索了 GitHub、Google 和 StackOverflow,但没有得到解决。
我有一个 Angular Fullstack Generator 应用程序。这是构建如下:
Node -> Express -> Angular
我在这里没有做任何不寻常的事情;我的应用程序在我家的开发机器上运行良好。然而,一旦我构建它,将它缩小并通过节点而不是 grunt 在我的互联网服务器上启动它;我看到呈现的 html,加载的 css,但在尝试进行身份验证时(我为此使用 express-jwt);我遇到了全面的跨域起源问题。
我在 npm 上使用 CORS 模块;那是一个不需要任何设置就可以让一切通过的问题,所以不要将此问题标记为重复,它不是;我可以向你保证!
这就是我的服务器端 app.js 的基本构造方式:
var express = require('express');
var app = express();
var config = require('./config/environment');
var cors = require('cors');
var server = require('http').createServer(app);
require('./config/express')(app);
require('./routes')(app);
require('./config/passport')(passport);
app.use(cors());
app.options('*', cors());
require('./routes')(app, passport);
server.listen(config.port, config.ip, function () {
console.log('Express server listening on %d, in %s mode', config.port, app.get('env'));
});
exports = module.exports = app;
这是我的浏览器显示的内容:
Cross-Origin-Request blocked: The Same-Origin-Policy....
我不明白 - 我根本不是 x-origin 要求任何东西。所有资源都驻留在我的服务器上。所有请求都来自一个浏览器。
您可以在响应标头中看到:
access-control-allow-origin: *
然后,当登录时,OPTIONS 请求被发送到 localhost 而不是 FQDN,并立即以红色字母中止。