2011-11-09 9 views
5

मेरे पास यह एपीआई नोडजेस-एक्सप्रेस के साथ बनाया गया है:क्रॉस-डोमेन पहुंच के लिए वेब सेवा कैसे उपलब्ध कराएं?

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, आदि

के माध्यम से बुलाया जा सके

उत्तर

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

नोट: यदि कोई इसे देख रहा है और उस पर नहीं उठा रहा है, तो app.use (अनुमति क्रॉसडोमेन); // ऐप कॉन्फ़िगरेशन सेक्शन कोड के आपके app.configure() भाग के लिए मुख्य घटक है ... (आपको सभी मिडलवेयर कोड भी होना चाहिए) – cmcculloh

+0

धन्यवाद दोस्त .. आपने अपना बहुत समय बचाया है। । – whizcreed

0

This आपके लिए सहायक हो सकता है।

हालांकि मुझे लगता है कि JQuery ने छुपा आईफ्रेम का उपयोग कर क्रॉस-डोमेन अनुरोधों का समर्थन करना शुरू कर दिया है, लेकिन मुझे यकीन नहीं है।

+0

मैं हैक की तरह, शांत। हालांकि, मुझे मानक तरीके से वेब सेवा को क्रॉस-डोमेन से सुलभ बनाने की आवश्यकता है, एपीआई एक सार्वजनिक एपीआई होगी, यही कारण है कि। – xybrek

संबंधित मुद्दे