【问题标题】:In-app handling of SubDomain with GAE使用 GAE 对 SubDomain 进行应用内处理
【发布时间】:2014-08-21 12:07:19
【问题描述】:

如何在 GAE 应用程序中处理子域?该应用程序是否可以区分:

例如

user1.xyz.comuser2.xyz.com ?使用 Java 代码?或者这应该通过我的域名托管来完成,比如 GoDaddy?或者这可以通过像 Spring 或 Restlet 这样的 Web 框架来完成?或者我需要同时使用两者(GoDaddy + Spring 或 Restlet)?

我正在为我的网络应用程序使用 Restlet 框架,是否可以执行以下操作:

public class RootServerResource extends ServerResource {
  @Get("json")
  public String represent() {
    String username = getRequest().getSubDomain(); //  here!
    return "";
  }
}

这是我的问题:

  • 单个 GAE 应用程序是否可以处理多个子域?
  • 如果是,是否可以将 GAE 子域设置为通配符 (*)
  • 使用Restlet如何实现获取子域?

【问题讨论】:

    标签: java google-app-engine restlet


    【解决方案1】:

    HttpServletRequest 类中,您可以使用getServerName() 了解客户端请求的主机名。 See the documentation here.

    This question 解释了如何使用 Restlet 获取HttpServletRequest

    您可以使用实用程序类 org.restlet.ext.servlet.ServletUtils 来访问 HttpServletRequest。

    现在完整的代码是:

    org.restlet.Request restletRequest = getRequest();
    HttpServletRequest servletRequest = ServletUtils.getRequest(restletRequest);
    String serverName = servletRequest.getServerName();
    

    【讨论】:

    • 其实我需要的是我需要得到客户端的IP和域名
    • 你确定吗?这不是你的问题所说的。无论如何,您可以通过 getRemoteAddr()getRemoteHost() 获取客户端的 IP 地址和域。请注意,它并不总是客户端的 IP 地址,例如,如果他使用代理,您将只能看到代理地址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2013-06-02
    • 1970-01-01
    相关资源
    最近更新 更多