2011-11-09 11 views
5

Ho questa API costruito con Nodejs Express:Come rendere disponibile il servizio Web per l'accesso tra domini diversi?

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); 
      }); 

Tuttavia, ho bisogno di fare un cliente che siederà su un altro dominio. Come posso risolvere questo codice in modo che possa essere chiamato come JQuery $ .ajax, ecc.

risposta

13

Qualcosa del genere dovrebbe funzionare:

//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')); 
}); 
+0

Nota: nel caso in cui qualcuno la stia osservando e non la raccolga, l'app.use (allowCrossDomain); dalla // sezione di configurazione dell'app è il componente chiave per la parte app.configure() del codice ... (devi avere anche tutto il codice middleware) – cmcculloh

+0

grazie amico ... mi hai risparmiato un sacco di tempo. . – whizcreed

0

This potrebbe esserti utile.

Anche se penso che JQuery abbia già iniziato a supportare richieste tra domini utilizzando iframe nascosti, ma non ne sono sicuro.

+0

mi piace l'hack, fresco. Tuttavia, ho bisogno di rendere il servizio web accessibile da un dominio incrociato utilizzando il modo standard, l'API sarà un'API pubblica, ecco perché. – xybrek

Problemi correlati