簡體   English   中英

Node.js res.setHeader('content-type', 'text/javascript'); 將響應 javascript 作為文件下載推送

[英]Node.js res.setHeader('content-type', 'text/javascript'); pushing the response javascript as file download

場景:考慮以下代碼,將 JavaScript 作為來自 Node.JS 服務器的響應。

var http = require('http');

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

問題:它強制瀏覽器下載文件。

問題:如何讓它在瀏覽器上呈現?

注意:使用相同的HTTP-header: 'content-type', 'text/javascript'在 .net 網絡服務中工作HTTP-header: 'content-type', 'text/javascript'

因此,其明確的以下陳述並不成立。
如果您希望 Web 瀏覽器呈現 HTML,則應將其更改為:

Content-Type: text/html

更新:在下載其application/octet-stream期間檢查content-type

但是當我用 curl 發出請求時,輸出如下:

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")}

使用application/javascript作為內容類型而不是text/javascript

提到text/javascript已過時。 請參閱參考文檔

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 所建議的,請參考 節點 http docs ,那里沒有response.send()

您可以直接設置內容類型,如下所示:

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

參考通過 nodejs 文檔鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM