如何正确处理ajax 302跳转问题回博客首页

作者:麦鸡 来源:麦鸡(Macji) 时间:2009-02-28 14:01:00 

如果我们的web应用有大量的异步请求,而这些异步请求是在web服务器认证的情况下,那当我们请求发生在服务器认证失效下,服务器自动302到登录页面,那我们异步获取的是登录页面的数据。我们看YUI代码,当ajax请求发生301 302属于失败事件。

...
if(httpStatus >= 200 && httpStatus < 300 || httpStatus === 1223){
//
}
...

但事实上,并没有发生失败事件,浏览器会再发一次ajax请求到302的地址,如果还是发生302,一直请求,直到完成请求或者请求跨域失败为止。对于js来说,301 302这种跳转是透明的,无法处理。

测试地址(请用firebug, 打开控制台,查看数据,一目了然)

那到底如何当ajax正确处理302呢,这是浏览器级别的问题,也就是说没有浏览器能正确处理302。对于我们前端来说,正确的验证ajax回来的数据,并给出提示,那也不友好(比如服务器端希望我们去登录页面)。更友好的处理是当服务器端发生302,那ajax就当”错误”处理,也做302跳转。

//success的时候 不是你想要的数据后,做如下验证
if(-1 != data.indexOf('x')){//x为302后页面特定的字符
 var LOGIN_DOMAIN = 'xxx';//302地址
 window.location = LOGIN_DOMAIN;
 return true;
}
//当302跳转后,ajax发生跨域,可以在failure处理,但 ie返回的是o.status 是 0
failure: function(o){
 if(302 == o.status){
  //
 }
}
标签:302,301,跳转,ajax,博客
0
投稿

猜你喜欢

  • 小议sqlserver数据库主键选取策略

    2011-10-24 19:51:30
  • 一些实用性较高的js方法

    2024-04-29 13:37:40
  • 解决jupyter运行pyqt代码内核重启的问题

    2022-01-29 21:28:40
  • python字符类型的一些方法小结

    2023-06-27 00:00:20
  • Pytorch中的Tensorboard与Transforms搭配使用

    2023-07-09 08:27:05
  • Python使用scrapy采集数据时为每个请求随机分配user-agent的方法

    2023-02-08 15:20:31
  • margin双倍边距问题:ie和firefox显示

    2008-09-07 15:05:00
  • python 列表推导和生成器表达式的使用

    2021-03-16 11:21:39
  • python中把嵌套的列表合并成一个列表方法总结

    2022-06-07 04:11:22
  • python学习笔记:字典的使用示例详解

    2022-06-14 16:31:31
  • asp xmlhttp下载一句话

    2013-06-30 06:47:48
  • uniapp使用百度地图的保姆式教学(适合初学者!)

    2024-04-29 14:06:21
  • Python中的with...as用法介绍

    2023-03-30 11:17:19
  • Javascript世界的最大整数值

    2008-06-23 13:23:00
  • MyBatis 如何写配置文件和简单使用

    2024-01-26 08:01:18
  • 在Linux上安装Python的Flask框架和创建第一个app实例的教程

    2021-08-26 14:23:11
  • Python3中在Anaconda环境下安装basemap包

    2021-11-30 20:05:57
  • Python requests模块cookie实例解析

    2023-11-18 15:44:56
  • Python脚本调试工具安装过程

    2021-08-02 23:10:53
  • Oracle 自增(auto increment) 或 标识字段的建立方法

    2009-03-06 11:15:00
  • asp之家 网络编程 m.aspxhome.com