iOS v12 Https 请求错误

Posted

技术标签:

【中文标题】iOS v12 Https 请求错误【英文标题】:iOS v12 Https requests errors 【发布时间】:2018-11-15 08:34:12 【问题描述】:

我注意到我在 ios v12 上的 Ionic Angular 应用程序发出的 https 请求分别失败,从未到达我的后端。

我可以确认我的应用是高效的,并且这个错误只发生在 iOS >= v12 上

当我在 Xcode 10 beta 中调试时,我收到以下错误

“headers”:“normalizedNames”:,“lazyUpdate”:null,“headers”:,“status”:0,“statusText”:“未知错误”,“url”:null ,“ok”:false,“name”:“HttpErrorResponse”,“message”:“(未知 url)的 Http 失败响应:0 未知错误”,“error”:“isTrusted”:true

我的 Node / Express.js 后端设置了以下标头

var allowedOrigins = ["https://example.com", "http://ionic.local", "http://localhost:8080"];

 var origin = req.headers.origin;
 if(allowedOrigins.indexOf(origin) > -1)
        res.setHeader('Access-Control-Allow-Origin', origin);
  else 
        res.setHeader("Access-Control-Allow-Origin", "https://example.com");
    

 res.header("Access-Control-Allow-Credentials", "true") 
 res.header("Access-Control-Allow-Headers", "Origin, Authorization, Content-Type, Content-Range, Content-Disposition, Content-Description, X-Requested-With, X-ACCESS_TOKEN");
 res.header("Access-Control-Allow-Methods", "GET,PUT,POST");

有人遇到同样的问题吗? 您对代码进行了哪些更改以解决 iOS v12 的问题?

附: 我打开了 Apple 的问题

Ionic 论坛上的链接主题也在这里:https://forum.ionicframework.com/t/ios-12-beta-preflight-requests-fail

以防万一在 WkWebView 插件上打开问题:https://github.com/ionic-team/cordova-plugin-ionic-webview/issues/112

更新

我不确定,但看起来我只在分别查询 POST 请求时遇到问题,而在执行 GET 请求时我没有遇到它...你能确认一下吗?

更新 2

在下面的讨论/问题中,https://github.com/ionic-team/cordova-plugin-ionic-webview/issues/112,我们还押注 iOS 版本本身的错误。看看下个测试版会不会改正

更新 3

Xcode 10 beta 2iOS 12 beta 2 于 2018 年 6 月 19 日星期二发布解决了我的问题

【问题讨论】:

这似乎是一个广泛传播的问题。任何使用 Web 视图发出请求的应用程序似乎都已损坏。我现在在 WWDC,一旦我收到 Apple 的回复,我会更新答案。 @InkGolem Thx,期待苹果的反馈 感谢@InkGolem!我相信整个社区都对这个感兴趣。 @InkGolem 有关此问题的任何新信息? THX 确认这只影响 POST 请求 【参考方案1】:

测试是问题,在iOS 12上,以下两种方法不会遇到这个问题

    使用 HTTP 的请求 使用 form-data 发布请求,而不是使用 json。如果使用 JSON 发布,会触发选项请求,但 webkit 不会发布此请求,因此跨域失败

【讨论】:

虽然这些变通办法可能有效,但我强烈建议您不要使用未加密的网络流量或修改 MIME 类型,它们的存在是有原因的【参考方案2】:

我非常有信心这只是一个 beta 1 错误,没有经过确认的解决方法。在 WWDC 期间,我从来没有找到机会亲自验证这一点,但它似乎得到了多个来源的证实,包括 open radar 上的这个错误。我将直接向 Apple 提交一个额外的错误,并将通过任何回复更新我的答案。

更新: 我在 iOS 12 beta 2 上测试了多台设备,问题似乎已经解决。没有更新向 Apple 提交的错误,但我假设它已在最新更新中得到解决。

更新 2: Apple 终于修复了我的 bug。

【讨论】:

【参考方案3】:

问题是iOS 12 beta 1的内部问题

Xcode 10 beta 2iOS 12 beta 2 于 2018 年 6 月 19 日星期二发布解决了我的问题

【讨论】:

Beta 版的修复从未进入 iOS 12 官方版本。

以上是关于iOS v12 Https 请求错误的主要内容,如果未能解决你的问题,请参考以下文章

我需要 Discord.js v12 和数据库的一些错误

在Angular中将项目从v10迁移到v12后如何修复错误[关闭]

iOS Quickblox 错误:请求失败:未经授权 (401)

iOS 13:MPMediaPickerController - 内部错误/找不到请求的应用扩展

Angular GET 请求错误,但仅在 Safari iOS 上

需要帮助将 Bot 更新到 Discord.js v12