【问题标题】: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 的具体用法)。

标签: javascript jquery ajax google-chrome 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多