8

我注意到从 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 的问题?

PS:我已经打开了 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 版本本身的错误。让我们看看它是否会在下一个 beta 版本中得到纠正

更新 3

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

4

3 回答 3

3

问题是内部问题iOS 12 beta 1

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

于 2018-06-19T21:07:31.117 回答
3

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

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

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

于 2018-06-12T20:18:27.433 回答
-3

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

  1. 使用HTTP请求
  2. 使用form-data发布请求,而不是使用json。如果您使用JSON发布,将触发选项请求,但 webkit 不会发布此请求,因此跨域失败
于 2018-06-12T10:07:36.470 回答