3

我在这里真的没有知识;我在这个问题上搜索了 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,并立即以红色字母中止。

4

1 回答 1

1

必须在路由之前调用 Cors。这就是我一劳永逸地摆脱所有 CROSS Domain Origin 问题的方法:

var cors    = require('cors');

app.use(cors());
app.options('*', cors()); 

require('./routes')(app);
于 2015-02-18T01:54:09.277 回答