我在使用jquery的307 Temporary Redirect
statusCode时遇到了很多麻烦。
我有一个apache服务器,在需要时返回307。 307正在被正确抛出(我可以用firebug或wireshark跟踪看到这个),但我似乎无法触发重定向。
$.ajax({
url: someURL,
type: 'GET',
processData: false,
data: someData,
cache: true,
timeout: 5000,
statusCode: {
307: function() {
alert('307'); // this does NOT get called
}
},
error: function(request, status, error){
try {
console.log(request.getAllResponseHeaders());
}
catch (err) { }
},
success: function(data, textStatus, response){
try {
console.log(response.getAllResponseHeaders());
}
catch (err) { }
});
我想查看标题,以便我可以使用getAllResponseHeaders()
方法重定向。这适用于200,但307永远不会触发(在success
或error
处理程序中)
我在使用Firebug检查流量时注意到的一件事是,在重定向之后,ajax GET
被发送到服务器并带有重定向的url!但这会导致失败。
那么,是什么给出的?
修改: 我用jquery 1.5.1和1.6.1
尝试了这个答案 0 :(得分:4)
好吧,我做了一些研究,看起来307是由浏览器自动处理的,并且不能被jquery拦截。
我最终使用不同的statusCode来执行重定向(410 Gone
)。
这可能不是最佳解决方案,但我无法访问apache服务器代码。