3

我有一个在 domainX 上的 Google App Engine 上运行的应用程序。这允许用户输入、存储和显示数据。

我也希望这个应用程序在 DomainY 上运行。我想使用 2 个应用程序的域名为 DataStoreService 生成一个密钥,这样数据就不会在 2 个域名之间共享。

我如何获得域名?我知道我可以使用 HttpServletRequest 来获取我的一个 servlet 的 DoPost 方法上的 url,但是如何获取域?我还需要在没有 HttpServletRequest 的 RemoteServiceServlet 上获取域来获取 url。

谢谢

4

1 回答 1

3

您可以引入一个特殊的过滤器,映射到/*,它将从 HTTP 请求中获取当前域,并将其存储到请求存储中以供以后重用。

我建议使用getServerName()(它的Host标题),而不是 URL。

例如:

class RememberDomain implements Filter {
  doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {  
    DomainHolder.getInstance().setDomain(request.getServerName());    
    chain.doFilter(request, response);
  }
  ... init and destroy
}


class DomainHolder {

  //store domain here
  pricate ThreadLocal<String> domain = new ThreadLocal<String>(); 

  DomainHolder getInstance() { ... sigleton ... }

  ... get/set domain name
}
于 2013-03-05T10:17:34.930 回答