用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调用浏览器组件发起的请求和浏览器直接发起的请求有一定区别。   1)浏览器可以通过返回的ht...

ajax请求重定向

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

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

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

AJAX请求时,本页面不能重定向

在进行AJAX请求时,本页面不能再请求期间跳转到其它页面,否则Ajax请求失败。...

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

我将通过 jQuery xhr 请求发送到远程站点 (这是扩展,铬和设置的所有跨站点设置 … …): $.ajax({ type: "POST", contentType : "tex...

Spring MVC 系列(四)——Spring MVC 与Ajax交互及重定向操作

一、Spring MVC 与Ajax交互 一般情况下,Controller中方法返回值类型有两种 1、String 直接跳转到某View界面 2、Void 不需要进行页面跳转,直接访问下一个方法...

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

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

ajax 发送请求无法重定向

ajax 是默认就是不支持重定向的,它是局部刷新,不重新加载页面。

form和ajax的重定向

form提交表单或者window.location.href=".......",后台直接response.sendRedirect是可以重定向的。 但是ajax的提交,后台response.sen...

servlet请求中post提交表单重定向到跨域网站问题

1.问题描述
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Ajax发请求,然后在服务器端重定向(不能达到期望的结果) 与 用浏览器直接向服务器重定向 是不同的
举报原因:
原因补充:

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