如何使用jquery处理statuscode 307重定向

时间:2011-06-13 15:37:47

标签: javascript html jquery

我在使用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永远不会触发(在successerror处理程序中)

我在使用Firebug检查流量时注意到的一件事是,在重定向之后,ajax GET被发送到服务器并带有重定向的url!但这会导致失败。

那么,是什么给出的?

修改: 我用jquery 1.5.1和1.6.1

尝试了这个

1 个答案:

答案 0 :(得分:4)

好吧,我做了一些研究,看起来307是由浏览器自动处理的,并且不能被jquery拦截。

我最终使用不同的statusCode来执行重定向(410 Gone)。

这可能不是最佳解决方案,但我无法访问apache服务器代码。