iOS11在所有移动浏览器中导致CORS问题

我们在使用iOS11的iOS设备上测试我们的网站,并注意到它正在破坏,因为浏览器不接受来自我们的API的响应。 使用远程调试器,我们能够确定我们收到了CORS权限错误,并且正在剥离响应正文和HTTP标头。 这似乎发生在所有移动iOS浏览器(Chrome / Safari)上,并且即使在我将CORS响应标头更改为通配符值之后仍然会出现这种情况。 但是,iOS的每个其他浏览器/操作系统/版本都运行良好。 我已经附加了来自api的网络响应,api的响应头以及我们从控制台获得的错误。 此问题可在以下urlhttps://demo2.lifespeak.com/Share.aspx?key=ccb0b4a2-d041-426d-ac3b-c9472379613e–language-1–vid-19–cid-121进行测试比较iOS11和其他浏览器的结果

有没有关于iOS11的东西可能导致这种情况,或者说失败了,有什么方法可以进一步诊断吗? 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我们遇到类似的情况,其中包含在域A上托管的表单,并将数据发布到域B上的API.来自域A的POST请求包含与域B无关的标头“x-api-key”

对API的预检OPTIONS请求的响应包含标头

  • Access-Control-Allow-Origin: https:// domainA
  • 访问控制允许报头:*
  • 访问控制允许的方法:*

这适用于所有浏览器,除了iOS上的浏览器。 正如我们最终发现的那样,为Access-Control-Allow-Headers指定通配符*不适用于iOS浏览器。 在对OPTIONS请求的响应中,您需要指定POST请求中存在的所有标头,即使某些标头与域B上的服务器无关。只有这样iOS才会发送POST请求。

将响应标头更改为

  • 访问控制允许报头:接受,内容类型,X-要求,采用X-API密钥

做到了(即使服务器B上没有处理标题x-api-key)

iOS 11引入了一些新的跟踪保护function,可以阻止某些网站/url

您可以在设置 – > Safari – >防止跨站点跟踪中禁用此function。

也许那是你的问题?

我有同样的问题,这是有效的 – 但我想要一种方法,没有我们的用户必须这样做。

来源: https : //www.macrumors.com/how-to/safari-ios-11-tracking-prevention/