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

转载 2013年12月05日 18:41:18

 今天在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状态。

ajax请求重定向

一、ajax重定向的问题。 默认ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的。如果需要用到重定向可以通过以下方法: 第一步:后端代码改造。 在后端(大部分情况都是拦截器)中...
  • lasting_5
  • lasting_5
  • 2016年07月19日 17:48
  • 13368

ajax 发送请求无法重定向

ajax 是默认就是不支持重定向的,它是局部刷新,不重新加载页面。
  • qq_30306577
  • qq_30306577
  • 2017年05月11日 20:37
  • 2782

发起一个ajax请求,response 重定向,为什么不起作用?

总结: Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了。所以浏览器端是不会发起重定向的。 个人理解正常http url请求和ajax请求的区别: 1)正常的...
  • Ideality_hunter
  • Ideality_hunter
  • 2017年03月12日 23:15
  • 5947

[jquery]AJAX 重定向的困境,如何重定向 URL 或如何设置重定向请求的属性

我将通过 jQuery xhr 请求发送到远程站点 (这是扩展,铬和设置的所有跨站点设置 … …): $.ajax({ type: "POST", contentType : "tex...
  • u010317990
  • u010317990
  • 2014年12月05日 11:21
  • 10382

SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1、jquery ajax跨...
  • clh604
  • clh604
  • 2014年03月03日 14:04
  • 78725

ajax 重定向跨域问题

一个页面发ajax请求到后端接口,这个后端接口重定向了另外一个域名的地址;此时会出现跨域问题。 ajax调用浏览器组件发起的请求和浏览器直接发起的请求有一定区别。   1)浏览器可以通过返回的ht...
  • liyantianmin
  • liyantianmin
  • 2017年06月20日 11:56
  • 1362

如何解决ajax跨域重定向问题

原文:https://www.cnblogs.com/sunxucool/p/3433992.html 笔记: jquery 的 jsonp可以实现跨域的GET请求和跨域重定向,原理是在返...
  • xuefeiliuyuxiu
  • xuefeiliuyuxiu
  • 2017年12月28日 17:54
  • 41

SSO单点登录、ajax跨域重定向、跨域设置Cookie、京东单点登录实例分析

最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1、jQuery ajax跨...
  • xqhys
  • xqhys
  • 2017年03月20日 17:47
  • 497

解决ajax请求filter重定向失败

参考引用方法 在新项目写了一个fillter,能拦截jsp,.action的请求,但是ajax的请求可以拦截不能实现重写向登录页面。这是一个bug呀!  参考以上引用的方法,解决了。 ajax重定...
  • GuiYingde
  • GuiYingde
  • 2016年11月28日 18:33
  • 3288

利用javascript Location访问Url,重定向,刷新页面

本文介绍怎么使用javascript Location对象读和修改Url.怎么重载或刷新页面。javascript提供了许多方法访问,修改当前用户在浏览器中访问的url.所有的这些技术都是基于loca...
  • yansanhu
  • yansanhu
  • 2010年03月24日 20:10
  • 12584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Ajax发请求,然后在服务器端重定向(不能达到期望的结果) 与 用浏览器直接向服务器重定向 是不同的
举报原因:
原因补充:

(最多只允许输入30个字)