2013-01-05 11 views
33

के साथ अतिरिक्त http शीर्षलेख भेजें मेरे पास Express.JS के साथ कुछ स्थिर पृष्ठ हैं। सेटअप आसान है:एक्सप्रेस.जेएस

var app = express(); 

app.configure(function(){ 
    app.use(express.static(path.join(application_root, "StaticPages"))); 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

मैं प्रतिक्रिया एक addittional http हेडर को शामिल करने के लिए (: *पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति) चाहते हैं। इसे कहाँ रखा जाना चाहिए? मैं नीचे दिए गए नमूना की कोशिश की, लेकिन निश्चित रूप से शीर्ष लेख केवल डिफ़ॉल्ट पृष्ठ पर दिखाई देता:

app.get('/', function(req, res){ 
    res.setHeader("Access-Control-Allow-Origin", "*"); 
    res.send('Hello World'); 
}); 

धन्यवाद।

+1

कैसे एक मार्ग पर एक कस्टम हेडर स्थापित करने के लिए और 'res.setHeader' परिभाषित नहीं है की तलाश में उन लोगों के लिए,' res.set' या 'res.header' का उपयोग करें। http://expressjs.com/en/api.html#res.set – AndyPerlitch

उत्तर

48

मैं नीचे दिए गए नमूना की कोशिश की, लेकिन निश्चित रूप से शीर्ष लेख केवल डिफ़ॉल्ट पृष्ठ

हाँ पर दिखाई देता है, वह यह है कि क्योंकि आप इसे सिर्फ GET / मार्ग के लिए और अन्य रास्तों के लिए नहीं परिभाषित किया। आपको इसके बजाय एक मिडलवेयर का उपयोग करना चाहिए।

आप सभी अनुरोधों के लिए शीर्षक सेट करना चाहते हैं:

app.configure(function(){ 
    app.use(function(req, res, next) { 
    res.setHeader("Access-Control-Allow-Origin", "*"); 
    return next(); 
    }); 
    app.use(express.static(path.join(application_root, "StaticPages"))); 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

तुम सिर्फ स्थिर फ़ोल्डरों के लिए यह करने के लिए चाहते हैं, कोई सामान्य तरीका है। आप शायद express.static को बदल सकते हैं (जो connect.static से आता है)। ऐसा करने का एक और तरीका यूआरएल से मेल खाना है और यूआरएल मिलान होने पर हेडर सेट करना है।

app.configure(function(){ 
    app.use(function(req, res, next) { 
    var matchUrl = '/StaticFolder'; 
    if(req.url.substring(0, matchUrl.length) === matchUrl) { 
     res.setHeader("Access-Control-Allow-Origin", "*"); 
    } 
    return next(); 
    }); 
    app.use(express.static(path.join(application_root, "StaticPages"))); 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

नोट: कि मिडलवेयर जरूरत मार्गों प्रभाव बनाने के लिए करने से पहले हो सकता है, दूसरे शब्दों में आप नहीं मिडलवेयर स्थिर मिडलवेयर के बाद रख सकते हैं।

+0

यह काम करता है, धन्यवाद। मुझे पहले मामले की जरूरत थी। – csg

+1

'setHeaders - फ़ाइल के साथ सेवा करने के लिए HTTP शीर्षलेख सेट करने के लिए फ़ंक्शन के बारे में क्या है। - स्थिर http://expressjs.com/en/4x/api.html#express.static – Green

+0

में फ़ंक्शन 'आप एक ऐडलर _after_ स्थिर स्थिर मिडलवेयर जोड़ सकते हैं जो' ऐप 'के बजाय यूआरएल सबस्ट्रिंग मैच के बिना हेडर सेट करता है। उपयोग करें ... कम ओवरहेड –

2

एक और तरीका है:

app.use(express.static(
    path.join(application_root, "StaticPages"), 
    { 
     setHeaders: (res) => { 
      res.setHeader('Access-Control-Allow-Origin', '*') 
     } 
    } 
))