代码之家  ›  专栏  ›  技术社区  ›  sgnsajgon Anand Capur

如何读取GWT中的*.war清单文件

  •  0
  • sgnsajgon Anand Capur  · 技术社区  · 6 年前

    我有一个 战争 maven生成的文件,使用 GWT Maven插件 Maven War插件 . 在 战争 显示 META-INF/清单.mf 我有一些条目描述了Web应用程序依赖项的工件ID。我想阅读这些条目,以HTML格式向用户显示它们。如何读取GWT中的清单文件?在桌面应用程序中,它很简单:

    Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/MANIFEST.MF")
    

    this.getClass().getResourceAsStream("META-INF/MANIFEST.MF")
    

    但我不能在GWT中这样做,因为 JRE仿真库中不存在方法 .

    我也试着用 请求生成器 :

    new RequestBuilder(RequestBuilder.GET, "META-INF/MANIFEST.MF")
           .sendRequest("", new RequestCallback() {
                 @Override
                 public void onResponseReceived(Request req, Response resp) {
                     String text = resp.getText();
                 }
    
                 @Override
                 public void onError(Request res, Throwable throwable) {
                     result.put("Err","Err");
                  }
             });
    

    但它也不起作用( 错误404-未找到 )

    1 回复  |  直到 6 年前
        1
  •  3
  •   Colin Alworth    6 年前

    用户的Web浏览器无法读取META-INF或WEB-INF中的任何内容,这将使下载战争工作原理的内部内容变得过于容易,既无法找到机密(包含密码或其他详细信息的配置文件),也无法访问源代码并对其进行反向工程。

    为了实现类似的目标,您需要编写一个servlet,它提供该文件的内容。这可能从项目中的两个示例行中的任何一个开始。

    这不是一个真正的GWT问题——GWT应用程序是为JS编译的,而不是一个jar或一场战争,它恰好被保存在一个.war存档文件中。