2013-04-09 10 views
19

シナリオ:Node.JSサーバーからの応答としてJavaScriptを与えるには、次のコードを検討してください。Node.js res.setHeader( 'content-type'、 'text/javascript');応答のjavascriptをファイルとしてダウンロード

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 Webサービスでの作業、その明確な次の文は当てはまりません。

Content-Type: text/html 

更新:あなたがHTMLをレンダリングするために、Webブラウザを使用する場合は
は、あなたがこれを変更する必要があり、ダウンロード中に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()'はExpress-ismであり、プレーンな 'http'を使用すると利用できません。だからあなたのサンプルコードがあなたが実際に使っているものの100%ではないと思っています。 – robertklep

+0

コンテンツタイプとして 'application/javascript'を使用します。 – mithunsatheesh

答えて

34

使用application/javascriptなどのコンテンツタイプの代わりに、:カールとの要求は、次のように出力されます

が廃止されました。参照番号docsを参照してください。

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

またSOにこの質問を参照してください。

UPDATE:

私はあなたが与えたコードを実行しようとしていると、以下の動作しませんでした。

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

これは私のために働いたものです。

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

robertklepが示唆したように、そこにはresponse.send()がない、node http docsを参照してください。

+2

' setHeader'はそれほど尊重されていないので、何か別のことが起こっています。 – robertklep

+0

http://expressjs.com/ja/api.html#res送信 – caub

5

あなたが直接コンテンツの種類以下のように設定することができます。

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

参考のためにドキュメントlink nodejsを通過します。

関連する問題