Phantomjs 如何从page.open发出的请求中查看HTTP状态代码?
我有一个包含以下内容的phantomJS脚本:Phantomjs 如何从page.open发出的请求中查看HTTP状态代码?,phantomjs,Phantomjs,我有一个包含以下内容的phantomJS脚本: page.open(url, function (status) { if (status === "fail") { /* handle failure */ } }); 状态检查有时有效,但即使请求返回500,状态仍将为“成功”。如何获取实际请求状态代码?您可以这样做: var page=require('webpage')。create(), 系统=要求(“系统”), 资源=[]; 第页打开('http://google.com,功
page.open(url, function (status) {
if (status === "fail") { /* handle failure */ }
});
状态检查有时有效,但即使请求返回500,状态仍将为“成功”。如何获取实际请求状态代码?您可以这样做:
var page=require('webpage')。create(),
系统=要求(“系统”),
资源=[];
第页打开('http://google.com,功能(状态){
console.log('加载了http状态:',资源[0]。状态);
phantom.exit();
});
page.onResourceReceived=函数(响应){
//检查资源是否已下载完毕
如果(response.stage!=“end”)返回;
//如果需要,请应用资源筛选器:
if(response.headers.filter)(函数(header){
if(header.name=='Content Type'&&header.value.indexOf('text/html')==0){
返回true;
}
返回false;
})(长度>0)
资源。推送(响应);
};
因此,如果您需要检查第一个浏览器请求的状态(在本例中是google的html页面),您应该将其视为resources[0]中返回的第一个请求。status
。在onResourceReceived处理程序中,您可以为尝试从中获取http代码的资源添加更多筛选器
更新:由于,在中添加了对已完成答复的检查
page.property('onResourceError', function(res) {
资源变量未定义
即使我把它设定为
var page = require('webpage').create(),
system = require('system'),
resources = [];
高超的技术。您可能希望使用的另一个条件是检查阶段<代码>如果(response.stage!=“end”)返回如果资源未完成下载,code>将退出该函数。这将防止重复处理,因为每次下载都有“开始”和“结束”事件。@fotijr没错!非常感谢。我现在就更新这个片段,谢谢你的回复!这显然是违反规定的,但这是一个伟大而准确的答案