Javascript 获取html错误301,返回完全相同的链接
我正在尝试使用Node.js应用程序获取HTML页面的内容。 我发现这个代码:(yojimbo答案),它似乎工作得很好。当我尝试启动代码时,我得到永久移动301的HTML结果,但重定向链接与我发送的链接相同Javascript 获取html错误301,返回完全相同的链接,javascript,html,node.js,Javascript,Html,Node.js,我正在尝试使用Node.js应用程序获取HTML页面的内容。 我发现这个代码:(yojimbo答案),它似乎工作得很好。当我尝试启动代码时,我得到永久移动301的HTML结果,但重定向链接与我发送的链接相同 var util = require("util"), http = require("http"); var options = { host: "www.mylink.com", port: 80, path: "/folder/content.xml"
var util = require("util"),
http = require("http");
var options = {
host: "www.mylink.com",
port: 80,
path: "/folder/content.xml"
};
var content = "";
var req = http.request(options, function(res) {
res.setEncoding("utf8");
res.on("data", function (chunk) {
content += chunk;
});
res.on("end", function () {
util.log(content);
});
});
req.end();
回报是:
30 Jul 13:08:52 - <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<p>The document has moved <a href="http://mylink.com/folder/content.xml"<here</a>.</p>
<hr>
<adress>Apache/2.2.22 (Ubuntu) Server at www.mylink.com Port 80</adress>
</body></html>
30 Jul 13:08:52-
301永久搬迁
文档已移动301状态代码表示请求的资源已移动,客户端必须重定向到响应的位置标题中包含的链接。默认情况下,http
模块不遵循重定向(状态代码3xx)
您可以使用该模块,该模块被称为执行重定向
请求被设计为使http成为可能的最简单的方式
电话。默认情况下,它支持HTTPS并遵循重定向
要手动执行此操作,请从响应中读取位置标头,并启动对该URI的新请求
var req = http.request(options, function(res) {
res.setEncoding("utf8");
if(res.statusCode === 301 || res.statusCode === 302) {
var newRequestUri = res.headers.location;
http.request({hostname: newRequestUri}, function(res) {
//read response
}
}
res.on("data", function (chunk) {
content += chunk;
});
res.on("end", function () {
util.log(content);
});
});
如果“Location:”标题中的重定向链接与最初请求的链接相同,则服务器可能配置错误或已断开
请注意,响应体中的链接仅为方便人类而存在,不应被视为权威。只能使用HTTP响应头中的“位置:”字段来定位重定向的资源。请注意,您请求/folder/content.xml
并重定向到/folder.content.xml
。这不是同一个url。抱歉,这是一个输入错误,我必须重新复制来自另一台计算机的邮件。这不是同一个url:请求应该是“www.mylink.com/folder/content.xml”,但响应中没有“www”。我也有同样的问题,但在我的例子中,服务器要求URL上有一个尾随的“/”。我可以这样做,但让我觉得有趣的是,我在重定向页面中得到了完全相同的链接。