angular - 上传图像时仅在 iOS 移动 safari 中出现虚假 CORS 失败

标签 angular ionic-framework safari ionic3 mobile-safari

我在 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通过 Access-Control-Allow-Origin。 尽管 OPTIONS 请求为 Access-Control-Allow 返回 https://upload.geekity.com -起源

以下是桌面和移动 safari 上 OPTIONSPOST 的网络检查器的屏幕截图。

Desktop Safari OPTIONS Desktop Safari POST iOS Safari OPTIONS iOS Safari POST

您可以在这里查看源代码:image-upload .

我真的不知道这里会发生什么导致以这种方式失败。

最佳答案

您是对的,CORS 错误消息非常具有误导性。在过去的几天里,我一直在为完全相同的问题而苦苦挣扎,结果我试图从手机上传的图像对于我正在使用的应用程序服务器来说太大了,它是 Kubernetes 上的 nginx;所以对我有用的修复方法是将这个注释添加到入口配置中

nginx.ingress.kubernetes.io/proxy-body-size: "0"

删除对上传大小的任何限制。

413 Request Entity Too Large

关于angular - 上传图像时仅在 iOS 移动 safari 中出现虚假 CORS 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50141697/

相关文章:

在 iframe 中托管的 Angular 2 路由应用程序

cordova - ionic 框架 gulp --cordova "prepare"失败

javascript - PHP 脚本不接受来自具有 AngularJS 脚本的客户端的 GET/POST 数据

javascript - 在 iOS7、chrome 和 safari 中,在输入字段的焦点上,页面滚动。我该如何阻止它?

javascript - 显示图像未显示在 safari 中,但在 IE11 中工作正常

html - 无法在 Safari 中渲染 SVG 图像

javascript - 无法上传文件并将其转换为 base64string

angular - Angular 4中的HTML编码

javascript - 可能有一行 Div,每个具有不同的左起始位置和宽度以填充相邻的同级?

html - Ionic 2 占位符文本样式