关闭

用Ajax发请求,然后在服务器端重定向(不能达到期望的结果) 与 用浏览器直接向服务器重定向 是不同的

1731人阅读 评论(0) 收藏 举报

 今天在CSDN看到一个问题,如下
  请问一下,下面这个链接(http://www.sohu.com/dfwejrle.html)明明不存在,却返回有效,是怎么回事?
急,在线等,谢谢!

-收缩HTML代码  运行代码  [如果运行无效果,请自行将源代码保存为html文件运行]
<script type="text/javascript" src="jquery.js"></script> 
<script>
$.ajax({
  url: 'http://www.sohu.com/dfwejrle.html',
  type: 'GET',
  complete: function(response) {
  if(response.status == 200) {
  alert('有效');
  } else {
  alert('无效');
  }
  }
 });  
</script>

  下面贴出我原来的回复,由于楼主提前无满意答案结贴了,不知道他看到了没有。

  楼主是用ie浏览器并且直接拖进浏览器里面查看的吧??这样在ie下不存在跨域问题,并且ajax获取不到是否服务器端进行跳转了,但是soho对于访问不存在的页面时都会跳转到首页,所以状态会是3xx重定向状态然后是200。

你通过http协议来看看,肯定跨域了。在ff下直接拖进浏览器查看页会出现跨域错误。


  ajax调用浏览器组件发起的请求和浏览器直接发起的请求有一定区别。
  1)浏览器可以通过返回的http状态进行相应的操作,如访问一个页面,此页面重定向时,浏览器可以获取到重定向后的url然后进行转向。
  2)对于ajax,ajax的目的就是无刷新的,所以对于服务器端进行了重定向时,ajax会获取到重定向状态值3xx和重定向url,然后再获取重定向的页面运行完后输出到客户端的html代码,并且返回200状态。通过最后的示例+firebug的监控可以看出相当于发送了2次ajax请求

firebug监控xhr请求



  所以有一些服务器对访问一些实际不存在的页面进行重定向到网站首页或者一些实际存在的页面时,ajax请求这些不存在的页面,也不会返回404,找不到页面的错误,而是返回200状态。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18250次
    • 积分:364
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:26篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论