有没有办法从javascript获取当前网页的http状态?
花了一些时间在网上搜索,但没有运气......似乎不可能,但想与StackOverflow核实可能是一些奇特的解决方法。
(作为响应正文的一部分从服务器提供它是不可接受的,状态应该只能通过http标头获得)
答案 0 :(得分:30)
对不起,这是不可能的。
答案 1 :(得分:0)
您只能检查页面加载的状态 尝试:var x = document.readyState; x的结果可能是: 五个值之一:
uninitialized - Has not started loading yet
loading - Is loading
loaded - Has been loaded
interactive - Has loaded enough and the user can interact with it
complete - Fully loaded
答案 2 :(得分:-1)
我刚遇到一种情况,我不希望我的平台的图像管理器为我正在处理的项目加载(页面的内容为HTTP 404)。我只需要引用每次页面加载(Web 1.0或Web 3.0请求)时加载的JSON数据;我只需要使用以下内容:
if (JSON.parse(id_(push_current_id()+'_json').textContent).http == 200) {}
但是大多数人都没有足够的幸运,他们没有时间来构建自己的系统,也无法挖掘出棘手的复杂代码。在这些情况下,如果您使用的是PHP,则可以看看PHP的headers_list。
如果第二个选项不可行,则下一个方法是确定CMS / CRM是否足够胜任,从而确定所请求的URL是否为HTTP 200、404、500等。否则,如果使用他们的软件可以为企业和竞争对手提供动力,他们只能链接到成千上万个不存在的页面,您的系统将为所有页面返回HTTP 200,然后您将在搜索引擎上大受打击。因此,在这种情况下,我将找出如何访问软件的HTTP,然后使用它来输出到JavaScript Number对象。
JavaScript AJAX HTTP状态
var xhr = new XMLHttpRequest();
xhr.open(method,url,true);
xhr.send(null);
xhr.onreadystatechange = function()
{
if (xhr.readyState=='4') {console.log(xhr.status);}
}
如果您使用的不是我的平台或不错的CMS / CRM,那么剩下的就是,如果您可以依靠AJAX请求,但是(至少从我的角度来看),您可以可能要依靠Web 1.0请求的HTTP状态才能发出Web 2.0请求。大多数系统,即使是半个体面的系统,也会有很多不一致之处,因为软件就像孩子一样,而且大多数软件没有两个一致的原始父代。此时,您不得不重新评估:这个问题是否值得我度过?如果是这样,那么我是否会毫无意义地继续使用该软件或致力于寻找替代方案?
最后,对于那些愿意全力以赴的人:提倡标准组织实施JavaScript API。 应该非常简单,但是作为一个不断挑战Web软件当前可用功能顶点的人,我建议降低自己的期望:标准机构中有足够的不称职的人(许多非常有干劲和热情的人)担任领导/决策职位,这会给您带来政治上的繁文tape节。我并不是说这不会发生,尽管就算如此简单的事情也不要指望奇迹。
祝你好运!
答案 3 :(得分:-2)
这不是很好,但你可以使用
t = jQuery.get(location.href).success(function (){console.log(t.status)}).error(function(){console.log(t.status)})