私はMediaWikiのサーバにiOSアプリを認証するために、次のコードを持っている:iOSの8日iOS 8とiOS 9のNSURLセッションの違いは?
let task = NSURLSession.sharedSession()
task.configuration.HTTPAdditionalHeaders = ["Authorization": "Basic " + base64EncodedCredentials]
task.dataTaskWithURL(url!) {(data, response, error) in
dispatch_async(dispatch_get_main_queue(), {
if data != nil {
let result = NSString(data: data!, encoding: NSUTF8StringEncoding)
if resultIsValid(result) {
//Do authentication stuff
} else {
self.showLoginErrorMessage()
}
} else {
self.showLoginErrorMessage()
}
})
}.resume()
これは完璧に動作し、私はHTTP 200 OKレスポンスを受信します。しかし、iOS 9では401が不正なものになります。残念ながら、実際に受信した情報を見るためにサーバにアクセスすることはできず、内部ネットワーク上にあるため、サーバにリンクすることはできません。 HTTP基本アクセス認証を使用しているため、認証タイプが他のどのサーバーと同じである必要があると想定します。
iOS 8から9のAPIに変更があり、このような問題が発生する可能性がありますか?たとえば、コンテンツタイプやユーザエージェントのような他のデフォルトヘッダを変更/削除/追加することはできますか?
編集: 私は、Content-Typeを追加することで、これがiOS 8のヘッダーの一部であることを発見しましたが、iOS 9では検出されませんでした。 Content-Typeを設定しなくても、iOS 9のリクエストには存在しないというのはまだ奇妙です。
が、これは[アプリケーションのトランスポート・セキュリティ](httpsの問題である可能性があります。同じ問題を抱えている人のため
は、ここで私は両方のiOS 8とiOS 9のために働いて、私の認証を持っているために使用される最終的なコードです: //developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW14)? –
残念なことに、私は401を無許可に戻すことはありません。さらに、私はInfo.plistに例外を追加しました。 – Jorn
両方のバージョンで同じです。私はまた、問題なくサーバーに認証するAndroidアプリを持っています。問題が発生したのはiOS 9のみです。 – Jorn