如何使Web服务可用于跨域访问?

时间:2011-11-09 16:01:56

标签: node.js express

我使用Nodejs-Express构建了这个API:

app.get('/api/v1/:search', function(req, res){
        var response = {}   
        res.contentType('application/json');
                // process req.params['search']
                // build and send response
                res.send(response, response.status_code);
          });

但是,我需要创建一个将位于另一个域的客户端。如何修复此代码,以便可以像JQuery $ .ajax等一样调用它。

2 个答案:

答案 0 :(得分:13)

这样的事情应该有效:

//Middleware: Allows cross-domain requests (CORS)
var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');

    next();
}

//App config
app.configure(function() {
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'secret' }));
  app.use(express.methodOverride());
  app.use(allowCrossDomain);
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

答案 1 :(得分:0)

This可能会对您有所帮助。

虽然我认为JQuery已经开始使用隐藏的iframe支持跨域请求,但我不确定。