2011-03-23 4 views
16

मेरे पास निम्न है:एक्सप्रेस-जेएस सामग्री-प्रकार हेडर सेट क्यों नहीं कर रहा है?

var express = require('express'), 
    app = express.createServer(); 

app.get("/offline.manifest", function(req, res){ 
    res.contentType("text/cache-manifest"); 
    res.end("CACHE MANIFEST"); 
}); 

app.listen(8561); 

क्रोम में नेटवर्क टैब का कहना है कि यह text/plain है। यह हेडर सेट क्यों नहीं कर रहा है?

उपरोक्त कोड काम करता है, मेरी समस्याएं एक्सप्रेस-जेएस

के पुराने संस्करण से जोड़ने के कारण हुई थीं

उत्तर

23

res.type('json') अब भी काम करता है और के रूप में अन्य लोगों ने कहा, आप बस
res.json({your: 'object'})

+2

यह बहुत अच्छा है क्योंकि यह आपको अभी भी JSON के रूप में ऑब्जेक्ट भेजने के लिए 'res.send (obj)' का उपयोग करने की अनुमति देता है। 'Res.end से बेहतर (JSON.stringify (obj))' –

+1

आप इसे भी चेन कर सकते हैं, 'res.type (' json ')। ({Your:' object '}); 'या नीचे दिए गए @ danday74 के रूप में बाहर, बस 'res.json ({your:' object '}); ' –

17

इस कोड का प्रयास करें:

var express = require('express'), 
    app = express.createServer(); 

app.get("/offline.manifest", function(req, res){ 
    res.header("Content-Type", "text/cache-manifest"); 
    res.end("CACHE MANIFEST"); 
}); 

app.listen(8561); 

(मैं आप उपयोग कर रहे संभालने कर रहा हूँ एक्सप्रेस की नवीनतम रिलीज, 2.0.0)

अद्यतन: मैंने अभी फ़ायरफ़ॉक्स 3.6.x और लाइव HTTP शीर्षलेख का उपयोग करके एक त्वरित परीक्षण किया है। यह एडॉन्स आउटपुट है:

HTTP/1.1 200 OK 
X-Powered-By: Express 
Content-Type: text/cache-manifest 
Connection: keep-alive 
Transfer-Encoding: chunked 

सुनिश्चित करें कि आप कोशिश करने से पहले अपने कैश को साफ़ करें।

+1

यह नहीं है करने के लिए सामग्री प्रकार सेट का उपयोग कर सकते मेरे लिए काम करो, यह अभी भी पाठ/सादा कहता है। –

+0

मैंने अभी इसे अपने स्थानीय विकास सेटअप पर परीक्षण किया है, पूरी तरह से काम किया है (अपडेट देखें) – schaermu

+0

आह! किसी कारण से यह नोड के पुराने संस्करण से जुड़ा हुआ था। धन्यवाद! :) –

1
बजाय

res.send()

उपयोग res.json() जो स्वत: application/json

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