Подтвердить что ты не робот

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

Ответ 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 .