如何获取页面加载前的状态码

Posted

技术标签:

【中文标题】如何获取页面加载前的状态码【英文标题】:How to get the status code of the page before it is loaded 【发布时间】:2015-10-07 11:09:57 【问题描述】:

有一个javascript行(你可以在浏览器控制台试试)

window.location.href='http://example.com'

这会将你推向http://example.com

在浏览器(谷歌浏览器)-> 开发者工具-> 网络部分你可能会看到它的状态为 200。

问题是:

如何在执行前正确获取状态码 200/404/302

window.location.href='http://example.com'

谢谢。

附: jQuery 可以使用。

【问题讨论】:

您必须先使用 Ajax 加载它,并且它必须是相同的域或启用 COR。 @epascarello 在这里有正确的答案,尽管如果您想在它不可用时做某事,那么服务器应该为这种情况提供一个错误页面。在这种特定情况下提供处理不应该是 JS 的工作。 (我基于 window.location.href 的具体用法)。 【参考方案1】:

HTTP 状态码是由服务器生成的,因此需要先对服务器执行一些 HTTP 请求,然后才能获得状态码——因此你需要对 url 进行 Ajax 调用——适应简单的在JQuery.get 中的例子你会有类似的东西;

$.get( "http://example.com", function( data ) 
  // Yeahh the URL works, we can do the page switch
  window.location.href='http://example.com';
);

JQuery.get 中还有其他示例处理错误处理等,但您可以自己阅读这些示例。

当然,你不需要整个页面来获取状态,你可以只执行一个 HTTP-HEAD,你可以看到讨论 here

有了所有这些,您可能会遇到跨站点脚本限制,您可以单独进行研究 - 已经有很多堆栈溢出问题。

【讨论】:

【参考方案2】:

获取状态码的唯一方法是在导航之前发出请求。这意味着对资源进行 Ajax 调用并检查状态。唯一的缺点是同源策略,因此站点需要位于同一域中,或者必须为您的资源启用 CORS。

【讨论】:

以上是关于如何获取页面加载前的状态码的主要内容,如果未能解决你的问题,请参考以下文章

数据加载完毕前的页面空白

页面加载前的Webpack SCSS“闪烁”

WebView如何判断页面真正成功加载?求大神帮助

如何从 Qt QWebEngineView 获取 HTTP 状态码?

页面加载前的地理位置提示?

视图加载前的 Swift 观察者