在tomcat web服务器中托管apple-app-association-file

问题描述 投票:0回答:2

我们要求在我们的应用程序中启用通用链接。我们有一个基于Java的Web应用程序(spring)和一个iOS应用程序。要根据苹果启用通用链接,我们需要创建一个json文件apple-app-association-file并在服务器中托管此文件。现在java web应用程序部署在windows服务器的tomcat中,apche 2.4用作Web服务器。请告诉我如何在tomcat或web服务器或war文件内部(代码内)托管apple-app-association-file,我们正在使用maven结构。根据文档,我们需要删除文件扩展名和文件应该访问如下:

网络应用程序的网址:https://xyz.example.com

其中xyz.example.com映射到tomcat中webapp文件夹中的Web应用程序。(localhost:8080 / webApp)

apple-app-association-file访问为:https://xyz.example.com/apple-app-association-file

现在作为扩展不存在我如何托管它。我需要更改代码并将其视为servle请求。即使我这样做也不是一个好主意只是为了访问文件执行servet

此外,为文件提供正确的MIME类型也很重要,对于Universal Links,它可以作为application / json提供。如何在tomcat或java web app中设置mime类型(spring)

json maven spring-mvc tomcat servlets
2个回答
1
投票

首先将文件重命名为apple-app-site-association.json,然后编写下一个Spring配置:

@EnableWebMvc
public class WebClientConfig extends WebMvcConfigurerAdapter {

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/.well-known/*")
      .addResourceLocations("/path/to/your/static/resources")
      .resourceChain(true)
      .addResolver(new PathResourceResolver() {
        @Override
        protected Resource getResource(String resourcePath, Resource location) throws IOException {
          if (resourcePath.equals("apple-app-site-association")) {
            return location.createRelative("apple-app-site-association.json");
          }
          return super.getResource(resourcePath, location);
        }
      });

  }
}

如下所述:developer.apple.com

您可以将文件放在服务器的根目录或.well-known子目录中。

然后该文件将使用正确的MIME类型“application / json”提供,并访问为:https://xyz.example.com/.well-known/apple-app-association-file


1
投票

来自pITer Simonov的解决方案适合我!但我不得不在里面添加根路径

< servlet-mapping > (in web.xml)

像这样:

< url-pattern >/</url-pattern >

之后,资源处理程序工作正常!

© www.soinside.com 2019 - 2024. All rights reserved.