3

我正在尝试在我们的 iOS 应用程序中添加对Universal Links的支持。因此,我们的服务器需要在 path 提供一个 json 文件/.well-known/apple-app-site-association。我在文件夹中创建了带有文件名apple-app-site-association的文件src/main/resources/well-known/,并将以下内容添加到我们的应用程序配置中:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry)
{
    registry.addResourceHandler(".well-known/**").addResourceLocations("classpath:/well-known/");
}

但是,这会导致来自服务器的 404。在尝试了许多不同的事情之后,我发现如果我像这样取出点:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry)
{
    registry.addResourceHandler("well-known/**").addResourceLocations("classpath:/well-known/");
}

并导航到/well-known/apple-app-site-association,它工作得很好。但是,它需要.在 URL 中包含 。

有什么办法可以使这项工作?我们使用的是 Spring 4.3.7 和 Spring Boot 1.4.5。

4

1 回答 1

2

在深入研究这一点时,我在 Javadoc 中看到了addResourceHandler以下内容:

Patterns like "/static/**" or "/css/{filename:\\w+\\.css}"} are allowed.

因此,我将映射更新为如下所示:

registry.addResourceHandler("{filename:\\.well-known}/**").addResourceLocations("classpath:/well-known/");

在此更改之后,事情按预期工作。我发现在冒号之前放什么并不重要,所以这就是我最终得到的结果:

registry.addResourceHandler("{wellKnownFolder:\\.well-known}/**").addResourceLocations("classpath:/well-known/");
于 2018-05-21T14:15:05.963 回答