IOS 9 Отправка почтового запроса, заблокирована ATS, обход не работает

Я пытаюсь обойти Application Transport Security (ATS), это новая функция IOS 9 и Xcode 7. Однако я попробовал обход 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(не полный, только часть на АТС)

    <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()

person Ulises Giacoman    schedule 25.07.2015    source источник


Ответы (1)


Это только что случилось со мной. Оказывается, я случайно добавил информацию об обходе в свой модульный тест Info.plist. Помещение его в правильный Info.plist устранило проблему, как и ожидалось. Я также использовал «localhost» вместо «127.0.0.1» и не указал порт.

Использование Xcode 7 бета 4.

person NSKirk    schedule 25.07.2015