2011-11-09 13 views
5

mam ten API zbudowany z Nodejs-Express:Jak udostępnić usługę sieci Web dla dostępu między domenami?

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

Jednak muszę dokonać klienta, który zasiądzie na innej domenie. Jak naprawić ten kod, aby można go było wywoływać, tak jak JQuery $ .ajax, itp.

Odpowiedz

13

Coś jak to powinno działać:

//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

Uwaga: Jeśli ktoś patrzy na to i nie odbiera go, app.use (allowCrossDomain); z sekcji // App config jest kluczowym komponentem dla twojego app.configure() fragmentu kodu ... (musisz również mieć cały kod oprogramowania pośredniego) – cmcculloh

+0

dzięki, że zaoszczędziłeś wiele mojego czasu. . – whizcreed

0

This może być pomocny.

Chociaż wydaje mi się, że JQuery już rozpoczął obsługę żądań między domenami przy użyciu ukrytych elementów iframe, ale nie jestem pewien.

+0

Lubię hack, chłodny. Muszę jednak udostępnić usługę sieciową z domeny w sposób standardowy, ponieważ API będzie z tego względu publicznym interfejsem API. – xybrek

Powiązane problemy