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

Dar*_*976 13 safari cors ios ios11

我们正在使用iOS11在iOS设备上测试我们的网站,并注意到它正在破坏,因为浏览器不接受来自我们API的响应.使用远程调试器,我们能够确定我们收到了CORS权限错误,并且正在剥离响应正文和HTTP标头.这似乎发生在所有移动iOS浏览器(Chrome/Safari)上,并且即使在我将CORS响应标头更改为通配符值后仍然会发生这种情况.但是,iOS的每个其他浏览器/操作系统/版本都能正常运行.我已经附加了来自api的网络响应,api的响应头以及我们从控制台获得的错误.

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

小智 8

我们在域A上托管了一个表单,并将数据发布到域B上的API时遇到了类似情况。域A的POST请求包含与域B不相关的标头“ x-api-key”

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

  • 访问控制允许来源:https:// domainA
  • 访问控制允许标题:*
  • 访问控制允许方法:*

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

将响应标头更改为

  • 访问控制允许标题:接受,内容类型,X请求带有,x-api-key

做到了(即使服务器B上未处理标头x-api-key)

  • 为什么这在 iOS 中仍然是一个问题?我对此很失望。感谢您成为该问题的唯一正确答案。:P (2认同)

Mik*_*ald 2

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

您可以在“设置”->“Safari”->“防止跨站跟踪”中禁用此功能。

也许这就是你的问题?

我有同样的问题,这有效 - 但我想要一种方法,而我们的用户不必这样做。

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