我试图更好地理解 COR,因为我们的 Web 应用程序的一些用户抱怨说,自从他们升级到 iOS 12 后,他们收到了预检错误。
来自网络检查器的错误
[Error] Preflight response is not successful
[Error] Fetch API cannot load https://www.api.com due to access control checks.
[Error] Failed to load resource: Preflight response is not successful (v4, line 0)
客户端应用程序是带有 Apollo 的 React 应用程序。它使用 Apache HTTPD 和 Express JS 通过 HTTPS 调用服务器。
在所有其他浏览器上一切正常,这与 iOS 12 无关。
奇怪的是,当我查看 HTTPD 访问日志时,我看不到任何预检调用。当我尝试直接访问服务器(在 iOS 12 上)时,我在日志中看到预检 OPTIONS 请求和 POST。但是,当通过 Web 应用程序调用服务器时,COR 预检失败。
在express应用程序中,我还注销了所有请求,但它也没有出现在那里。
在 HTTPD 中我有以下设置
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS
在快递中我也有同样的事情。
有任何想法吗?!
这是 iOSv12 中的一个错误,但它已经在 iOSv12.1 beta (16B5059d) 中修复,假设当前的 beta 代码已投入生产。
问题是 iOSv12 WebKit 预检 OPTIONS 调用不会离开设备。我已经运行 WireShark 和 iOSv12 模拟器来确认这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)