2013-04-09 4 views
19

परिदृश्य: जावास्क्रिप्ट को Node.JS सर्वर से प्रतिक्रिया के रूप में देने के लिए निम्न कोड पर विचार करें।Node.js res.setHeader ('सामग्री-प्रकार', 'टेक्स्ट/जावास्क्रिप्ट'); फ़ाइल डाउनलोड के रूप में प्रतिक्रिया जावास्क्रिप्ट को दबाकर

var http = require('http'); 

http.createServer(function (req, res) { 
var JS_Script = 'function Test() { alert("test success")}'; 
res.setHeader('content-type', 'text/javascript'); 
res.end(JS_Script); 
}).listen(8811); 

अंक: यह फ़ाइल डाउनलोड करने के लिए ब्राउज़र मजबूर।

प्रश्न: मैं इसे ब्राउज़र पर प्रस्तुत करने के लिए कैसे बना सकता हूं?

नोट: एक ही HTTP-header: 'content-type', 'text/javascript'

साथ .net वेब सेवा में काम करते हुए तो, इसका स्पष्ट निम्नलिखित बयान अच्छा नहीं रखता है।

Content-Type: text/html 

अद्यतन:
आप HTML रेंडर करने के लिए एक वेब ब्राउज़र चाहते हैं, आप को यह बदलना चाहिए डाउनलोड के दौरान content-type निरीक्षण पर अपने application/octet-stream

लेकिन इसके साथ ही जब मैं एक हिट

C:\>curl -is http://localhost:8811/ 
HTTP/1.1 200 OK 
Content-Type: text/javascript 
Content-Length: 166 
Date: Tue, 09 Apr 2013 10:31:32 GMT 
Connection: keep-alive 

function Test() { alert("test success")} 
+1

'res.send()' एक एक्सप्रेस-आईएसएम और अनुपलब्ध है जब आप सादे 'http' का उपयोग करते हैं। तो मैं सोच रहा हूं कि आपका नमूना कोड 100% नहीं है जिसका आप वास्तव में उपयोग कर रहे हैं। – robertklep

+0

सामग्री प्रकार – mithunsatheesh

उत्तर

34

उपयोग application/javascript के रूप में सामग्री के बजाय प्रकार: कर्ल के साथ अनुरोध है, तो निम्न उत्पादन होता है

text/javascript अप्रचलित का उल्लेख किया गया है। संदर्भ docs देखें।

http://www.iana.org/assignments/media-types/application

इसके अलावा SO पर इस सवाल को देखते हैं।

अद्यतन:

मैं कोड आप दे दिया है क्रियान्वित करने की कोशिश की है और नीचे काम नहीं किया।

res.setHeader('content-type', 'text/javascript'); 
res.send(JS_Script); 

यह मेरे लिए काम करता है।

res.setHeader('content-type', 'text/javascript'); 
res.end(JS_Script); 

robertklep ने सुझाव दिया है के रूप में, node http docs को देखें, वहां कोई नहीं response.send() है।

+2

के रूप में 'एप्लिकेशन/जावास्क्रिप्ट' का उपयोग करें 'सेटहेडर' को भी सम्मानित नहीं किया जाता है, इसलिए कुछ और चल रहा है। – robertklep

+0

http://expressjs.com/en/api.html#res भेजना है – caub

5

आप सीधे सेट कर सकते हैं नीचे की तरह सामग्री के प्रकार:

res.writeHead(200, {'Content-Type': 'text/plain'}); 

संदर्भ के लिए NodeJS के माध्यम से जाने डॉक्स link

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