【问题标题】:Alamofire: Error Domain=NSPOSIXErrorDomain Code=100 "Protocol error in iOS 11Alamofire:错误域 = NSPOSIXErrorDomain 代码 = 100“iOS 11 中的协议错误
【发布时间】:2018-03-08 00:37:19
【问题描述】:

运行 AlamoFire 4.5 Swift 4(我的项目)

我只在 iOS 11 中遇到这个错误。

所以我最近开始在工作的 api 端点上不停地收到此错误:

Error Domain=NSPOSIXErrorDomain Code=100 "Protocol error" UserInfo={NSErrorPeerAddressKey=<CFData 0x1c40913f0 [0x1b2c04240]>{length = 16, capacity = 16, bytes = 0x100201bb36aec68a0000000000000000}, _kCFStreamErrorCodeKey=100, _kCFStreamErrorDomainKey=1}

这是我提出请求的要点:

let urlPath = "SOME_PATH"
var params = [String:Any]()
params["app_version"] = version
params["apnsEnabled"] = apnsEnabled
params["ios_version"] = DeviceInfo.getIOSVersion()
params["model_name"] = UIDevice.current.modelName

let request = AFSessionManager.shared.manager.request(urlPath, method: HTTPMethod.get,  parameters: params as Parameters, headers: ["requested-domain":ServerDomain.get()!] as HTTPHeaders)

request.responseJSON{ response in
            if response.result.error == nil{
                 //DO STUFF               
            }else{
                 //HANDLE ERROR
            }
}

编辑:

我最后也只用 URLSession 尝试了这个:

func ping(){

    let session = URLSession(configuration: URLSessionConfiguration.default)

    let request = URLRequest(url: URL(string: "MY_PING_URL_STRING")!)

    let task: URLSessionDataTask = session.dataTask(with: request) { (data, response, error) -> Void in

        guard error == nil else {
            //Handle Error
            return
        }

        //DO STUFF
    }
    task.resume()
}

仅使用 URLSession 仍然出现协议错误。

另外,在 MacOS High Sierra 上的 Safari 中出现此错误。

【问题讨论】:

标签: swift alamofire nsurlsession


【解决方案1】:

我通过苹果得到了一些帮助。以下是他们的回应:

服务器在响应中发送“升级”标头。这是在 http 请求中使用的标头,我们的内部实现不允许将其作为响应标头。删除或使用不同的标题名称(如果仍需要将此信息传递给客户端)将解决问题。

事实证明,Apache 在标头中以 upgrade 响应,告诉客户端升级到 http/2。但是,在使用 SSL/TLS 时它会被破坏。这是关于 Apache 的bugzilla 的讨论。即使客户端使用的是 http/2,也似乎总是发送 upgrade 标头。

您可以通过将其放入主机配置中来删除 Apache 中的标头:

Header unset Upgrade

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2020-05-20
    • 2017-04-08
    • 2023-04-09
    • 1970-01-01
    • 2017-03-19
    • 2021-03-06
    • 2018-03-26
    相关资源
    最近更新 更多