如何获取页面加载前的状态码
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。
【讨论】:
以上是关于如何获取页面加载前的状态码的主要内容,如果未能解决你的问题,请参考以下文章