Swift 5 Заголовок авторизации URLRequest: зарезервировано, как установить? - PullRequest
1 голос
/ 18 мая 2019

В документации для URLRequest Swift в Foundation говорится, что стандартный метод установки значений заголовков для URLRequest не должен использоваться для зарезервированных заголовков HTTP.

По ссылке список зарезервированных заголовков HTTP немного глубже в документах, он говорит, что может игнорировать попытки установить эти заголовки.

Но он также говорит, что Authorization является зарезервированнымHTTP заголовок.

Это не может быть правдой, не так ли?Большой процент API в юниверсе требует, чтобы вы передавали токены аутентификации в заголовке вида Authorization: Bearer {token}

Так что, если Swift не позволяет установить заголовок Authorization, как получить к нему доступ?из этих API?

1 Ответ

0 голосов
/ 18 мая 2019

Реализовать проверку подлинности для обработки обычной проверки подлинности, например:

func urlSession(_ session: URLSession,
                didReceive challenge: URLAuthenticationChallenge,
                completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    switch challenge.protectionSpace.authenticationMethod {
    case NSURLAuthenticationMethodHTTPBasic:
        performBasicAuthentication(challenge: challenge, completionHandler: completionHandler)
    default:
        completionHandler(.performDefaultHandling, nil)
    }
}

func performBasicAuthentication(challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    let credential = URLCredential(user: "username", password: "password", persistence: .forSession)
    completionHandler(.useCredential, credential)
}

Вот ссылка ссылка

...