我有一个使用 gwt.2.5.1 java 开发的 Web 应用程序。在我的应用程序中,我有一个链接"Volex页面",它将发送到另一个服务器(Volex)的请求。
如果我使用"http://localhost:8085/myApp"打开我的应用程序并且可以看到"VLoex 页面",一旦用户点击在"Volex页面"上,它将被重定向到"Volex服务器",如下所示。
窗口位置("http://167.23.543.34:8087/VolexSer/volex")
上面的 url 访问了需要一些信息(如会话 ID)的 volex 服务器,为此我必须在 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);
}
这里打开两个域,一个是"本地主机",另一个是"167.23.543.34",如果我像上面一样设置 cookie,它不会显示在请求标头中。任何人都可以告诉mw上面的代码有什么问题吗?
问题位于 cookie 的域部分。出于安全目的,一台服务器的 Cookie 在另一台服务器上不可用(如果服务器不是来自一个域)。 我想你需要像跨域cookie这样的东西,请点击请求的链接或重建网址,并直接使用GET\POST发送所需的信息。