如何防止jQuery的AJAX从后门柱以下重定向?(How to prevent jQuery aj

2019-06-23 09:10发布

我有调度一个Ajax POST来执行操作的链接。 如果用户还没有登录,操作方法返回一个302重定向到登录页面。 如果发生这种情况,我要赶重定向,这样我可以显示一个收藏夹登录表单。

然而,似乎jQuery的遵循,而无需返回控制或调用回调函数的重定向。 在下面的代码,302重定向的警告没有被调用,并通过dataFiler函数被调用的时候,数据是登录页面的内容。

我怎样才能看到该页面已发出了302重定向,并转移到一个不同的动作?

 $.ajax(url,
        {
            data: postArguments,
            type : "POST",
            success: function (data) { alert(' success function'); },
            statusCode:
            {
                302: function () { alert(' received redirect 302'); },
                301: function () { alert(' received redirect 301'); }
            },
            dataFilter: function (data, type) { alert('got data ' + data); return data; }
        });

Answer 1:

这是不是与jQuery的,但用JavaScript本身的限制; 没有办法检测在JavaScript AJAX请求的重定向; 浏览器XHR对象自动神奇,无形中遵循重定向按照规范 。

理想的办法是增加一个catch在你的服务器代码检测一个AJAX请求 (“HTTP_X_REQUESTED_WITH”标头),并返回一个特殊的响应来检测匿名用户在你的JavaScript,并妥善处理。



文章来源: How to prevent jQuery ajax from following a redirect after a post?