获取html错误301,返回完全相同的链接
Getting html error 301, which return exact same link
我正在尝试使用Node.js应用程序获取HTML页面的内容。我发现了这样的代码:在Node.js/Express中;下载";页面并获取其HTML?(yojimbo回答),这似乎很有效。当我尝试启动代码时,我得到了301 Moved Permanently的HTML结果,坚果重定向链接与我发送的链接相同!
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>
它是永久地移到同一个地方,还是只是服务器上的某种安全性?或者我在代码中犯了错误?(但它适用于谷歌和我测试过的所有其他网站)。
我怀疑是".xml"造成了问题,因为我甚至用pdf格式的页面进行了测试,没有问题(只是一堆不可读的字符)。
在与客户讨论后,我将以另一种方式(直接下载)获得页面,这还可以。我仍然接受c.Pu.1的答案,但我仍然想知道为什么重定向链接与应用程序遵循的链接相同。
301状态代码表示请求的资源已被移动,客户端必须执行重定向到响应的Location标头中包含的链接。默认情况下,http
模块不遵循重定向(状态代码3xx)。
您可以使用请求模块,据说它可以执行重定向。
请求被设计为使http成为可能的最简单的方式电话。它支持HTTPS,默认情况下遵循重定向。
要手动执行此操作,请从响应中读取Location标头,并向该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响应标头中的"Location:"字段才能用于定位重定向的资源。
相关文章:
- 可以链接 '.then() 的返回响应,顺序与 '.then()' 的顺序不同
- 如何点击标题中的链接,然后返回HTML、Javascript和CSS
- 如果URL's链接返回错误
- 需要一个链接才能转到某个页面,然后快速返回到当前页面
- 如何将html表单与php链接,以便在例如单击按钮时返回true
- 当我从目的地链接返回时,如何在列表组中保持该位置
- 内部链接返回空错误,我在 Javascript 中找不到错误.外部链接工作得很好
- JQuery 打开弹出窗口并从单击的链接返回值
- 链接返回承诺数组的函数
- 使用JQuery防止链接返回false
- 如何从同一个链接返回不同的数据(带有图像扩展)
- Cordova:从外部链接返回时页面为空
- 方法链接返回未定义
- 通过Javascript SDK共享Facebook链接返回错误500
- 允许在内部单击链接返回 false
- 通过链接返回doPostBack的可能方式
- 链接返回对象Javascript
- 如何在nodejs中使用ioredis链接返回
- 从所单击的链接返回值时出现问题
- 如何链接返回承诺或价值的函数