我回答了這個問題here
相關代碼
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');
});
Enable cors提供了極好的資源,將CORS到您的服務器。
如果你有送與你服務好每一個靜態文件的CORS標頭,你必須使用Connect然後做這個
導航到connect\node_modules\send\lib\send.js
查找文件中setHeader
功能。這是實際將標題設置爲靜態資源的功能。只需添加
res.setHeader("Access-Control-Allow-Origin", "your domain");
和您的所有文件都會有CORS在他們頭
如果你只是使用連接到提供靜態文件,不需要任何的其他功能考慮使用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);
的
可能重複[我如何添加CORS報頭的靜態連接的服務器?(http://stackoverflow.com/questions/17124600/how-can-i-add- CORS報頭到一個靜態 - 連接服務器) – jmingov