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

本文探讨了使用Ajax请求一个不存在的链接时返回200状态的原因,特别是针对搜狐网站的情况。解释了浏览器与Ajax请求之间的差异,以及服务器端如何处理不存在页面的请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值