重定向到其他域时设置gwt cookie

时间:2015-04-14 07:41:35

标签: java gwt cookies

我有一个使用gwt.2.5.1,java开发的Web应用程序。在我的应用程序中,我有一个链接“Volex页面”,它将发送到其他服务器(Volex)的请求。

如果我用“http://localhost:8085/myApp”打开我的应用程序,并且一旦用户点击就可以看到“vloex页面” 在'Volex页面'上,它将被重定向到'Volex服务器',如下所示。

window.location的( “http://167.23.543.34:8087/VolexSer/volex”)

上面的url命中volex服务器需要一些像会话ID这样的信息,为此我必须在cookie中设置会话ID,如下所示:

    Date cookieDate = new Date();
    cookieDate.setDate(cookieDate.getDate() + 1);
    String baseUrl = "http://167.23.543.34:8087/VolexSer/volex";
    Integer nDomainInitialPosition = baseUrl.indexOf("/");
    Integer nDomainEndPosition = baseUrl.lastIndexOf(":");
    String baseDomain = baseUrl;

    if (nDomainInitialPosition == nDomainEndPosition) {
        nDomainEndPosition = baseUrl.indexOf("/");
    }
    baseDomain = baseUrl.substring(nDomainInitialPosition + 2, nDomainEndPosition);
    Window.alert("baseDomain: " + baseDomain);
    String eWebPageUrl = com.google.gwt.user.client.Window.Location.getHref();

    if (eWebPageUrl.contains("https://")) {
        Cookies.setCookie("sessionId", LoginInfo.getSessionId(), cookieDate, baseDomain, "/", true);
    } else {
        Cookies.setCookie("sessionId", LoginInfo.getSessionId(), cookieDate, baseDomain, "/", false);
    }  

这里用两个域打开一个是“localhost”,另一个是“167.23.543.34”,如果我像上面那样设置cookie,它就不会显示在请求头中。任何人都能告诉mw上面的代码有什么不对吗?

1 个答案:

答案 0 :(得分:0)

麻烦位于Cookie的域部分。出于安全目的,一台服务器的Cookie在另一台服务器上不可用(如果服务器不是来自一个域)。我想您需要跨域cookie之类的东西,请按照link或重建请求的URL并直接通过GET \ POST发送所需信息。