服务器响应码302,ajax与302响应代码测试 详细出处参考:http://www.jb51.net/article/42327.htm...
服务器端的响应是302 Found,在ajax的回调函数中能够获取这个状态码吗?能够从Response Headers中得到Location的值进行重定向吗?让我们来一起动手写写代码看看实际情况吧。
在ajax请求中,如果服务器端的响应是302 Found,在ajax的回调函数中能够获取这个状态码吗?能够从Response Headers中得到Location的值进行重定向吗?让我们来一起看看实际情况。
使用jquery的$.ajax()发起ajax请求的javascript代码如下:
复制代码 代码如下:
$.ajax({
url: '/oauth/respond',
type: 'post',
data: data,
complete: function(jqXHR){
console.log(jqXHR.status);
},
error: function (xhr) {
console.log(xhr.status);
}
});
当服务器端返回302 Found的响应时,浏览器中的运行结果如下:
在ajax的complete()与error()回调函数中得到的状态码都是404,而不是302。
这是为什么呢?
在stackoverflow上找到了
复制代码 代码如下:
You can't handle redirects with XHR callbacks because the browser takes care of them automatically. You will only get back what at the redirected location.
原来,当服务器将302响应发给浏览器时,浏览器并不是直接进行ajax回调处理,而是先执行302重定向——从Response Headers中读取Location信息,然后向Location中的Url发出请求,在收到这个请求的响应后才会进行ajax回调处理。大致流程如下:
jax -> browser -> server -> 302 -> browser(redirect) -> server -> browser -> ajax callback
而在我们的测试程序中,由于302返回的重定向URL在服务器上没有相应的处理程序,所以在ajax回调函数中得到的是404状态码;如果存在对应的URL,得到的状态码就是200。
所以,如果你想在ajax请求中根据302响应通过location.href进行重定向是不可行的。
如何解决?
方法一
继续用ajax,修改服务器端代码,将原来的302响应改为json响应,比如下面的ASP.NET MVC示例代码:
复制代码 代码如下:
return Json(new { status = 302, location = "/oauth/respond" });
ajax代码稍作修改即可:
复制代码 代码如下:
$.ajax({
url: '/oauth/respond',
type: 'post',
data: data,
dataType: 'json',
success: function (data) {
if (data.status == 302) {
location.href = data.location;
}
}
});
方法二
不用ajax,改用form。
复制代码 代码如下:
详细出处参考:
阅读(1053) | 评论(0) | 转发(0) |
服务器响应码302,ajax与302响应代码测试 详细出处参考:http://www.jb51.net/article/42327.htm...相关推荐
- 服务器响应码302,ajax与302响应代码测试
在ajax请求中,如果服务器端的响应是302 Found,在ajax的回调函数中能够获取这个状态码吗?能够从Response Headers中得到Location的值进行重定向吗?让我们来一起看看实际 ...
- 巨人通力电梯服务器显示,巨人通力电梯的所有故障代码大全[详细版]
通力电梯故障代码详解.通力电梯的控制系统可监测到电梯电气系统的常见基本故障,对于监测到的故障,可通过LCECPU板上的显示窗口以故障代码的数字形式显示出来.电梯的控制系统的NVRAM可同时存储99个常 ...
- HTTP 响应行 错误类型响应码
新增网关响应(知识补充,和文章内容无关) 网关响应 网关响应指未能成功处理API请求,从而产生的错误响应. API网关提供默认的网关响应(default).如果您需要自定义响应状态码或网关响应内容,可 ...
- HTTP常用的响应码说明(网页/服务器显示200、302、404、500是什么意思,表示什么)
常用的响应码说明 200 表示请求成功 302 表示请求重定向 404 表示请求服务器已经收到,但是想要的数据不存在(一般是请求地址错误) 500 表示请求服务器已经收到,但是服务器内部发生错误(代码 ...
- http 响应码 301 和 302 代表的是什么?有什么区别?
http 响应码 301 和 302 代表的是什么?有什么区别? 从官方文档的译文中 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status ...
- java 302 301,http响应码301和302代表的是什么?有什么区别?
301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地址 ...
- Java面试题之:http 响应码 301 和 302 代表的是什么?有什么区别?
http 响应码 301 和 302 代表的是什么?有什么区别? 一.http 响应码 301 和 302 代表的是什么?有什么区别? 一.http 响应码 301 和 302 代表的是什么?有什么区 ...
- hppt服务器状态响应码
HTTP响应状态码 1xx:临时响应 表示临时响应并需要请求者继续执行操作的状态代码. 100 继续请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101 切换协 ...
- 服务器不响应Ajax,web前端:解决在IE11浏览器下,JQuery的AJAX方法不响应问题
jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件.jQuery兼容各种主流浏览器 ...
最新文章
- 05-RARP: 逆地址解析协议
- 寻址(实模式和保护模式)
- 开源项目使用经验原则
- SAP WebClient UI和business switch相关的逻辑介绍
- 收集程序员语录70则
- 大专学的pHp找什么工作,大专毕业能做什么工作 毕业都去干嘛了
- 甲骨文因超过90亿美元的NetSuite交易起诉Larry Ellison和CEO Safra Catz
- 信号与系统Matlab实验1
- 2019年十大物联网安全事件
- 深度解析PHP数组函数array_merge
- 微信企业号上传图片 php,C#开发微信门户及应用微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)...
- 乐理入门: 二、时值、节奏、节拍
- Ubuntu 设置屏幕字体大小
- Google手机操作系统Android将100%开源
- lumerical安装教程
- c语言全部题目及答案,C语言全部题目及答案
- windows 下 nginx 双向认证自签名证书配置
- iphone测试oled的软件,干货 |西努妙解 iPhoneX OLED全面屏的检测方法
- win10计算机日历不能用,win10系统自带日历应用不显示节日的解决方法
- rejected from java.util.concurrent.ThreadPoolExe错误