微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 检测ajax请求上的跨域重定向

我们将身份验证委托给另一个域(Window Identify框架,联合身份验证设置).现在,如果会话在ajax请求之前超时,则服务器会将请求重定向到身份验证服务器.由于它成为跨域调用,因此浏览器会取消ajax请求.有没有办法在jquery / javascript中检测到这个?

我检查了xhr对象的status属性,在这种情况下设置为0,但它是取消请求的一个很好的指标吗? (我使用jquery $.ajax来发出ajax请求)

最佳答案
我也一直在研究这个问题,并且发现很少有证据证明你想要检测到的东西是完全可以检测到的.但是,我找到了一种方法来检测它可能发生了.

以下是您的活动所发生的事情:

  > JavaScript代码启动请求.
  >浏览器向服务器发出请求.
  >服务器以重定向回答.
  >浏览器确定新位置是​​不同的域.
  >浏览器取消请求(为了保证您的安全).
  >浏览器报告(不完全如实)请求从未发送过.

错误回调中,检查XMLHttpRequest对象的readyState字段.如果它为0(“UNSENT”),则表示您的AJAX请求从未发送过.

当然,为什么不发送它可能并不总是完全清楚.例如,用户可能只是拔掉了他的网络电缆.但是,如果您愿意假设网络运行正常,那么当您看到readyState == 0时,假设由于跨域问题而未发送请求,这也是合理的.这意味着重定向发生了.

如果您正在使用jQuery,那么您可以检查jqXHR.readyState.

原文地址:https://www.jb51.cc/jquery/428097.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐