仅在 iOS 移动 safari 中上传图像时出现错误的 CORS 失败
False CORS failure only in iOS mobile safari when uploading images
我 运行 在 iOS 11.3.1 和 iOS 模拟器中使用我的 iPhone 6 在移动版 Safari 上遇到一个奇怪的错误。
我有一个 Ionic 应用程序(PWA,不是 Cordova),几个月来一直运行良好,后端 API 使用 Laravel (PHP) 构建。我在上面配置了 CORS,它工作正常。
我刚刚尝试实现一项新功能,在该功能中我上传了一张图片,但它仅在移动版 Safari 上出现故障。
我看到 OPTIONS
请求通过了,看起来是正确的。事实上,request/response 看起来完全相同,除了来自桌面 Safari 的 User-Agent
有效。
在桌面版 Safari 上,此后跟一个 POST
成功。
在移动版 Safari 上,POST
甚至没有尝试退出,相反,尽管 OPTIONS
请求为 [= 返回 https://upload.geekity.com
,但我收到一条消息 Failed to load resource: Origin https://upload.geekity.com is not allowed by Access-Control-Allow-Origin.
18=].
这是 OPTIONS
和 POST
在桌面和移动 safari 上的网络检查器的屏幕截图。
您可以在此处查看源代码:image-upload。
我真的不知道这里会发生什么导致以这种方式失败。
尝试像 /api/ping
一样将端点添加到您的服务器。当您的应用程序启动时,首先向端点发送请求:
http.get('/api/ping');
没有身份验证,那么后续请求应该可以工作。
我还没有尝试过该解决方案,但可能会有帮助。
对于 laravel-5.4.*
在 .htaccess 文件中添加以下行
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "X-API-KEY, Origin, X-Requested-With, Content-Type, Accept,Authorization"
使用本机 http 功能来避免这种情况
https://ionicframework.com/docs/native/http/
它会完美地工作
你说得对,CORS 错误消息非常具有误导性。在过去的几天里,我一直在为完全相同的问题而苦苦挣扎,结果我试图从 phone 上传的图像对于我正在使用的应用程序服务器来说太大了,它是 Kubernetes 上的 nginx ;所以对我有用的修复方法是将此注释添加到入口配置
nginx.ingress.kubernetes.io/proxy-body-size: "0"
取消对上传大小的任何限制。
我 运行 在 iOS 11.3.1 和 iOS 模拟器中使用我的 iPhone 6 在移动版 Safari 上遇到一个奇怪的错误。
我有一个 Ionic 应用程序(PWA,不是 Cordova),几个月来一直运行良好,后端 API 使用 Laravel (PHP) 构建。我在上面配置了 CORS,它工作正常。
我刚刚尝试实现一项新功能,在该功能中我上传了一张图片,但它仅在移动版 Safari 上出现故障。
我看到 OPTIONS
请求通过了,看起来是正确的。事实上,request/response 看起来完全相同,除了来自桌面 Safari 的 User-Agent
有效。
在桌面版 Safari 上,此后跟一个 POST
成功。
在移动版 Safari 上,POST
甚至没有尝试退出,相反,尽管 OPTIONS
请求为 [= 返回 https://upload.geekity.com
,但我收到一条消息 Failed to load resource: Origin https://upload.geekity.com is not allowed by Access-Control-Allow-Origin.
18=].
这是 OPTIONS
和 POST
在桌面和移动 safari 上的网络检查器的屏幕截图。
您可以在此处查看源代码:image-upload。
我真的不知道这里会发生什么导致以这种方式失败。
尝试像 /api/ping
一样将端点添加到您的服务器。当您的应用程序启动时,首先向端点发送请求:
http.get('/api/ping');
没有身份验证,那么后续请求应该可以工作。
我还没有尝试过该解决方案,但可能会有帮助。
对于 laravel-5.4.* 在 .htaccess 文件中添加以下行
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "X-API-KEY, Origin, X-Requested-With, Content-Type, Accept,Authorization"
使用本机 http 功能来避免这种情况 https://ionicframework.com/docs/native/http/ 它会完美地工作
你说得对,CORS 错误消息非常具有误导性。在过去的几天里,我一直在为完全相同的问题而苦苦挣扎,结果我试图从 phone 上传的图像对于我正在使用的应用程序服务器来说太大了,它是 Kubernetes 上的 nginx ;所以对我有用的修复方法是将此注释添加到入口配置
nginx.ingress.kubernetes.io/proxy-body-size: "0"
取消对上传大小的任何限制。