IOS 9发送Post请求,被ATS阻止,绕过不起作用

标签 ios xcode swift http-post app-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(不完整,只是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()

最佳答案

这件事刚刚发生在我身上。事实证明,我不小心将旁路信息添加到了我的单元测试 Info.plist 中。正如预期的那样,将其放入正确的 Info.plist 中解决了该问题。我还使用“localhost”而不是“127.0.0.1”,并且没有提供端口。

使用 Xcode 7 Beta 4。

关于IOS 9发送Post请求,被ATS阻止,绕过不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31628608/

相关文章:

ios - 'init()' 不可用 xcode 7

objective-c - MacOS Metal 应用程序可以在 Obj-C 中运行,但无法在 Swift 翻译中绘制

swift - 按钮需要消失然后回来

xcode - 什么是 StoryBoard ID,我该如何使用它?

iphone - UITableView只有向上滚动后才会显示

IOS:主目录错误

ios - 在 Scenekit 中添加半透明图像作为纹理

ios - 如何使用 swift 生成可搜索的 PDF

ios - 调用中的额外参数

ios - 类在两者中都实现。将使用两者之一