检测ajax请求的跨域重定向
detect cross domain redirects on ajax request
我们将身份验证委托给另一个域(Window Identification框架,联合身份验证设置)。现在,如果会话在ajax请求之前超时,服务器会将请求重定向到身份验证服务器。由于它变成了一个跨域调用,ajax请求被浏览器取消。有没有一种方法可以在jquery/javascript中检测到这一点?
我检查了xhr对象的状态属性,在这种情况下该属性设置为0,但它是否是已取消请求的良好指标?(我使用jquery$.ajax进行ajax请求)
我也一直在研究这个问题,但几乎没有发现任何证据表明你想要检测的东西是完全可检测的。然而,我找到了一种方法来检测它可能发生了。
以下是您的活动:
- JavaScript代码启动请求
- 浏览器向服务器发出请求
- 服务器通过重定向进行应答
- 浏览器确定新位置是不同的域
- 浏览器会取消请求(以确保您的安全)
- 浏览器报告(并非完全真实)该请求从未发送
在错误回调中,检查XMLHttpRequest
对象的readyState
字段。如果它是0("UNSENT"),则表示您的AJAX请求从未发送过。
当然,可能并不总是完全清楚为什么没有发送。例如,用户可能只是拔掉了网络电缆。但是,如果您愿意假设网络运行良好,那么当您看到readyState == 0
时,也可以假设由于跨域问题而没有发送请求。这意味着重定向发生了。
如果您使用的是jQuery,那么您可以改为检查jqXHR.readyState
。
您可以查看此页面:http://api.jquery.com/jQuery.ajax/
如果请求失败,您可以在其中捕获一个错误参数。
错误(jqXHR,textStatus,errorThrown)
希望这会有所帮助。
相关文章:
- AJAX不会在文件上传后重定向到网页-POST方法
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- 当达到codeigniter/tank auth会话超时时,在ajax调用中处理php重定向
- 使用ajax进行HTML重定向
- 为什么AJAX调用有时会重定向页面
- 单击事件中的ajax请求后重定向
- 在AJAX调用中获取重定向的php页面名称
- 如何在ajax重定向中传递create-formbuilder
- 将对Ajax PUT的json响应重定向到要由EL解析的JSP中
- 从Ajax脚本重定向Javascript页面
- 如何通过ajax调用将用户重定向到页面
- Rails:通过调用Ajax重定向
- 下拉菜单重定向使用AJAX和JQuery或Javascript
- ajax表单提交后从客户端重定向
- 使用window.location.replacement()重定向AJAX成功
- Internet Explorer没有't重定向ajax响应
- 在Javascript中,如何在窗口位置重定向Ajax响应
- 在 PHP 中重定向 AJAX 调用