【发布时间】:2018-10-12 23:31:03
【问题描述】:
我在 iOS 11.3.1 和 iOS 模拟器中使用 iPhone 6 在移动 Safari 上遇到了一个奇怪的错误。
我有一个 Ionic 应用程序(PWA,不是 Cordova),它使用 Laravel (PHP) 构建的后端 API 几个月来一直运行良好。我在上面配置了 CORS,它工作正常。
我刚刚尝试实现一个新功能,即上传图片,但它只在移动 Safari 上中断。
我看到OPTIONS 请求通过了,它看起来是正确的。事实上,除了桌面 Safari 中的 User-Agent 有效之外,请求/响应看起来是一样的。
在桌面 Safari 上,这后面是 POST,它成功了。
在移动 Safari 上,POST 甚至不会尝试外出,而是收到一条消息 Failed to load resource: Origin https://upload.geekity.com is not allowed by Access-Control-Allow-Origin.,尽管 OPTIONS 请求返回 https://upload.geekity.com for Access-Control-Allow-Origin。
这里是OPTIONS 和POST 在桌面和移动 safari 上的网络检查器的屏幕截图。
您可以在这里查看源代码:image-upload。
我真的不知道这里会发生什么以这种方式失败。
【问题讨论】:
-
尝试在 OPTIONS 响应中的“Access-Control-Allow-Headers”响应标头中添加“Origin”。(Access-Control-Allow-Headers: ORIGIN, AUTHORISATION)stackoverflow.com/questions/16824661/…
-
较小的图像会发生这种情况吗?
-
是的,小图像也会发生这种情况。事实上,如果我注释掉将图像附加到请求的代码行,请求就可以正常工作。
-
您找到解决方案了吗?我也有同样的问题。
-
很遗憾,我还没有找到解决方案。我们暂时不使用该功能。
标签: angular ionic-framework safari ionic3 mobile-safari