我在这里回答了这个问题
相关代码
var http = require("http");
var connect = require('connect');
var app = connect()
.use(connect.logger('dev'))
.use(connect.static('home'))
.use(function(req, res){
res.setHeader("Access-Control-Allow-Origin", "http://example.com");
res.end('hello world\n');
});
var server = http.createServer(app);
server.listen(9999, function () {
console.log('server is listening');
});
启用 cors为将 cors 添加到服务器提供了极好的资源。
如果您必须将 cors 标头与您提供的每个静态文件一起发送并且您必须使用 connect 然后执行此操作
导航connect\node_modules\send\lib\send.js
在文件中查找setHeader
函数。这是实际将标头设置为静态资源的函数。只需添加
res.setHeader("Access-Control-Allow-Origin", "your domain");
并且您的所有文件中都将包含 cors 标头
如果您只是使用 connect 来提供静态文件并且不需要任何其他功能,请考虑使用send代替。这样您就可以直接访问它的所有方法,而无需编辑文件。您可以简单地从您的创建服务器方法中添加标头。这是示例代码
var http = require("http");
var connect = require('connect');
var send = require('send');
var url = require('url');
var app = http.createServer(function(req, res){
// your custom error-handling logic:
function error(err) {
res.statusCode = err.status || 500;
res.end(err.message);
}
// your custom directory handling logic:
function redirect() {
res.statusCode = 301;
res.setHeader('Location', req.url + '/');
res.end('Redirecting to ' + req.url + '/');
}
function setRoot(){
res.setHeader("Access-Control-Allow-Origin",
"http://example.com");
return './public';
}
function setIndex(){
res.setHeader("Access-Control-Allow-Origin",
"http://example.com");
return '/index.html';
}
send(req, url.parse(req.url).pathname)
.root(setRoot()).index(setIndex())
.on('error', error)
.on('directory', redirect)
.pipe(res);
}).listen(3000);