【发布时间】:2012-06-26 05:58:12
【问题描述】:
我正在尝试在 node.js 中构建一个支持跨域脚本的 Web 服务器,同时仍提供来自公共目录的静态文件。我正在使用 express.js,但不确定如何允许跨域脚本 (Access-Control-Allow-Origin: *)。
我看到了this post,但没有发现任何帮助。
var express = require('express')
, app = express.createServer();
app.get('/', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
app.configure(function () {
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(app.router);
});
app.configure('development', function () {
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function () {
var oneYear = 31557600000;
// app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler());
});
app.listen(8888);
console.log('express running at http://localhost:%d', 8888);
【问题讨论】:
-
注意 app.all 与 app.get。这是 OPTIONS 请求而不是 GET
-
参见local-web-server 一个简单的节点示例,支持 CORS 的静态网络服务器
-
查看 enable-cors.org/server_apache.html 了解更多信息
-
"Access-Control-Allow-Origin", "*"使您的 API 对网络钓鱼应用程序很有吸引力。考虑只允许已知来源。
标签: node.js express cors webserver cross-domain