来自节点js的HTML代码不被浏览器解释为

时间:2013-09-19 06:10:56

标签: javascript html node.js webserver

我创建了我的第一个节点js应用程序:一个简单的网络服务器。 这是代码:

// Load the http module to create an http server.
var http = require('http');

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (request, response) {

  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("<a href=\"http://www.tagesschau.de/\">ARD Tagesschau</a>\n");
});

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);

// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");

当我通过浏览器连接到服务器时,我将代码中指定的完整字符串作为网页。

浏览器不应该解释该HTML代码并显示链接吗?为什么我将完整的HTML代码显示为纯文本?

2 个答案:

答案 0 :(得分:4)

您已明确表示您要返回纯文本,而不是HTML。因此,浏览器将其视为纯文本。

如果您希望将HTML视为HTML,则说 HTML:

{"Content-Type": "text/html"}

(虽然您应该发送回HTML文档而不是HTML片段)。

答案 1 :(得分:2)

以下代码对我有用:

var http = require('http');

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (request, response) {

  response.writeHead(200, {"Content-Type": "text/html"});
  response.end("<a href=\"http://www.tagesschau.de/\">ARD Tagesschau</a>\n");
});

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);

// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");

您需要设置标题。有关详细信息,请查看Node API docs here.

检查您的firebug或dev工具的不同,以了解浏览器如何根据标题Content-Type进行不同的解释。