Как прочитать файл ассоциации яблоко-приложение-сайт на Vapor 4?

Чтобы пароль автозаполнения работал на платформах Apple, я тестирую Apple App Site Association (AASA) Validatorна этом сайте . Я добавил необходимый json в файл Public / .well-known / apple-app-site-association, чтобы пароль автозаполнения работал в моем приложении iOS.

Результат этого теста возвращается с такой ошибкой: Your file's 'content-type' header was not found or was not recognized.

Кто нибудь сталкивался с этой проблемой? Похоже, что файл AASA не загружается на мое устройство.

Обратите внимание, что в iOS 14 файлы AASA будут доставляться через CDN Apple, что отличается от того, как файлы AASA загружаются в настоящее время.

Что еще можно сделать в моем проекте Vapor 4, чтобы все заработало?

1 ответ

Я решаю ту же проблему, за ней следует ответ imike и некоторые исследования, вот решение.

  1. создать собственное промежуточное ПО
      struct UniversalLinksMiddleware: Middleware {
    
    func respond(to request: Request, chainingTo next: Responder) -> EventLoopFuture<Response> {
        guard request.url.string == "/.well-known/apple-app-site-association" else {
            return next.respond(to: request)
        }
        
        return next.respond(to: request).map { response in
            response.headers.add(name: "content-type", value: "application/json")
            return response
        }
    }
    
}

  1. добавить это промежуточное ПО в config.swiftфайл. Помните о порядке добавления промежуточного программного обеспечения, вы должны добавить его перед FileMIddleware. Потому что ответы, покидающие ваше приложение, проходят через промежуточное программное обеспечение в обратном порядке.
      app.middleware.use(UniversalLinksMiddleware())
app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))
Другие вопросы по тегам