Node.js res.setHeader('content-type', 'text/javascript'); нажатие ответ javascript как файл скачать
Сценарий. Рассмотрим следующий код, чтобы дать 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.end(JS_Script);
}).listen(8811);
Проблема. Это заставляет браузер загружать файл.
Вопрос. Как я могу сделать это в браузере?
Примечание. Работа в веб-службе .net с тем же HTTP-header: 'content-type', 'text/javascript'
Таким образом, его явное следующее утверждение не устраивает.
Если вы хотите, чтобы веб-браузер отображал HTML, вы должны изменить его на:
Content-Type: text/html
Обновление. При проверке content-type
во время загрузки его application/octet-stream
Но то же самое, когда я нажимаю запрос с помощью 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")}
Ответы
Ответ 1
Используйте application/javascript
как тип контента вместо text/javascript
text/javascript
упоминается устаревшим. См. Ссылку docs.
http://www.iana.org/assignments/media-types/application
Также см. этот вопрос на fooobar.com/questions/123527/....
UPDATE:
Я попытался выполнить код, который вы указали, и ниже не работает.
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
Вы можете напрямую установить тип содержимого, как показано ниже:
res.writeHead(200, {'Content-Type': 'text/plain'});
Для справки перейдите по ссылке nodejs Docs .