2016-05-17 64 views
0

我正在使AJAX请求(JQuery $ .ajax)加载我的网页中的一些内容。但是,用户会话过了一段时间后,需要再次进行身份验证。CORS - 重定向到第二个GET正在接收的页面

当用户未通过身份验证时,我收到来自网站的两个GET请求。一个带有我在AJAX(ok)中请求的URL,另一个由服务器的防火墙(?)提供,导致CORS错误,因为这个URL不在同一台服务器下。

例子:

GET https://my.url.requested 302 Found  5ms 
GET https://cors.url.which.causes.error.requesting.authentication 
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://cors.url.which.causes.error.requesting.authentication?blabla. (Reason: CORS header 'Access-Control-Allow-Origin' missing). 

我需要做的是重定向到第二个URL(在导致错误)。因为它是显示认证系统/屏幕的URL。

我该如何检查这个错误发生在我的JavaScript,所以我可以处理(重定向)?

+0

您的页面不应该随机向服务器发送请求 - 应该在查看后端之前了解客户端发生的情况。 – tyler

+0

这不是随机的。我在用户点击一个按钮时发送一个Ajax请求,以便他可以查看某一行的信息。我只是想知道是否有办法检查客户端并重定向它。我看到第一个GET请求的头部中有位置。我会尝试抓取这些信息...... – mk2

+0

“服务器的防火墙(?)提供的另一个”让我相信你不知道这是从哪里来的 – tyler

回答

0

$ .ajax函数中有一些参数。有两种方法来处理这个问题:

1)

$.ajax({ 
    url: loadurl, 
    error: function(jqXHR, status, errorThrown) { 
     window.location.replace(authentication-url); 
    } 
}); 

2)

$.ajax({ 
    url: loadurl, 
}).fail(function() { 
    window.location.replace(authentication-url); 
}); 

他们是等价的。阅读:.fail or Error: