Как прочитать файл ассоциации яблоко-приложение-сайт на 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 и некоторые исследования, вот решение.
- создать собственное промежуточное ПО
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
}
}
}
- добавить это промежуточное ПО в
config.swift
файл. Помните о порядке добавления промежуточного программного обеспечения, вы должны добавить его передFileMIddleware
. Потому что ответы, покидающие ваше приложение, проходят через промежуточное программное обеспечение в обратном порядке.
app.middleware.use(UniversalLinksMiddleware())
app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))