2

IOS 9 および Xcode 7 の新機能である Application Transport Security (ATS) をバイパスしようとしています。ただし、info.plist バイパスを試しましたが、まだ問題が発生しています。Xcode 6 でまったく同じコードを試してみたところ、リクエストが正常に送信されたので、リクエストは正しいはずです。これは単に新しい Xcode のバグである可能性がありますが、他の誰かが同じ問題に遭遇したかどうか疑問に思っていました. 私は適切なドキュメントに従っていると確信しています: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html#//apple_ref/doc/uid/ TP40016240

Info.plist (完全ではなく、ATS の一部のみ)

    <key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict/>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>http://127.0.0.1:5000</key>
    <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
    </dict>
</dict>

リクエスト:

    let postData = NSMutableData(data: "username=bobbyz".dataUsingEncoding(NSUTF8StringEncoding)!)
    postData.appendData("&password=form".dataUsingEncoding(NSUTF8StringEncoding)!)

    let request = NSMutableURLRequest(URL: NSURL(string: "http://127.0.0.1:5000/register")!,
        cachePolicy: .UseProtocolCachePolicy,
        timeoutInterval: 10.0)
    request.HTTPMethod = "POST"
    request.HTTPBody = postData

    let session = NSURLSession.sharedSession()
    let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
        if (error != nil) {
            print(error)
        } else {
            let httpResponse = response as? NSHTTPURLResponse
            print(httpResponse)
        }
    })

    dataTask.resume()
4

1 に答える 1

2

これは私に起こったことです。Unit Test Info.plist に誤ってバイパス情報を追加してしまったことが判明しました。正しい Info.plist に入れると、予想どおり問題が修正されました。また、「127.0.0.1」の代わりに「localhost」を使用し、ポートを提供しませんでした。

Xcode 7 ベータ 4 を使用しています。

于 2015-07-25T20:24:34.307 に答える