2012-03-30 79 views
3

我们使用JQuery AJAX进行登录。登录服务发出HTTP 302,其位置是登录用户的GET位置,或者(在登录失败的情况下),REST终端始终返回未授权的HTTP状态。与302同时,我们为JSESSIONID发布一组cookie。该cookie是一个HttpOnly cookie。jQuery重定向和HttpOnly Cookie

当使用直接的HTTP表单发布时,重定向工作正常,并且设置了所有内容。在使用JQuery AJAX时,重定向到GET/user/{userId}不起作用,因为cookie不会在第二次调用时发送。这个失败的第二次调用应该触发另一个重定向到auth-failed端点,但实际上没有。检查它,我看到第二个电话获得 “取消”。这是什么意思,我该如何解决这个问题呢?

+0

类似的问题,以及它是如何在这里解决:http://stackoverflow.com/questions/199099/how-to-管理一个重定向请求后,一个jquery-ajax-calling – jfriend00 2012-03-30 01:25:08

回答

1

这可能是你犯同源政策的罪魁祸首。您所登录的域是否与页面/脚本文件所服务的域相同?

如果没有,您需要使用CORS(跨源资源共享)来获取cookie。

您可以了解更多有关在这里:

http://www.html5rocks.com/en/tutorials/cors/

https://developer.mozilla.org/en-US/docs/HTTP_access_control

+0

只是在这里清理了一个老问题。虽然这个答案并不是完整的答案,但它足够接近。基本上,我需要做的是检查JSessionID的完整描述。有两件事在玩。 1)是,登录的域名是HTTPS,而GET的域名是HTTP,因此Darren提到了这个问题,因此遇到了CORS问题。 2)是在cookie中存在一个路径(/ auth vs/rest)问题,导致CORS修复程序无法工作。解决路径问题终于解决了这个问题。 – 2014-04-02 22:48:16