【发布时间】:2013-11-05 13:04:02
【问题描述】:
在我的 node.js 网页中,我正在制作类似于 Facebook 链接预览的页面预览。我正在调用以获取页面的 html,并使用它来创建预览。
$.ajax({
type: 'GET',
data: { "html": url },
url: "/htmlTest",
success: function (data) {
imgArray = [];
$('img', data).each(function () {
imgArray.push(this.src);
});
...
这是处理请求的服务器端代码。
app.get('/htmlTest', function (req, res) {
res.writeHead(200, { 'content-type': 'text/html' });
request(req.query.html, function (error, response, body) {
if (error) {
res.write(error.toString());
res.end('\n');
}
else if (response.statusCode == 200) {
res.write(body);
res.end('\n');
}
})
});
现在我注意到的是,它只会将其他页面使用的任何 CSS 插入到我的页面中,这真的会搞砸一切。为什么会这样?
另外,当我在做的时候,有没有人对 facebook 样式的页面预览有更好的想法?
【问题讨论】:
-
res.writeHead(200, { 'content-type': 'text/html' });似乎只是在写一个标题(不是 html 内容),虽然我还没有深入节点。您的问题更有可能是由res.write(body);引起的 -
你知道什么是标题吗?我建议你学习并理解 HTTP 协议本身是如何工作的,因为尝试使用 Node.js 使任何事情都富有成效。 HTTP 响应包含两个不同的部分 - 标头(内容类型/状态/等)和正文(实际有效负载)。
-
是的,老实说,这就是他们的文档听起来的样子,但是 css 不知何故进入了我的页面。
-
writeHead只是写 HTTP 头信息(状态、内容设置),而write实际上是在你的网页上写你想要的内容。看起来您正在下载一个 HTML 页面,并返回整个 HTML 页面,其中包括<head>标记(这可能是 css 所在的位置)。
标签: javascript jquery html node.js