关于跨域请求无法在ios12中正常请求,并且返回状态码为0,后端日志未收到get/post请求,仅收到options请求。

如果你的请求是一个跨域请求,并且你手动添加了请求头,那么就是一个复杂请求,浏览器会先发送一个options请求进行预检(判断是否被服务器允许),预检失败则get/post请求不会正常发送,成功则继续。如果你后端在允许跨域时Access-Control-Allow-Headers: * ,使用了 * 通配符。

在ios12中,* 通配符被禁用,导致options预检时发现是通配符 *,禁止浏览器继续发送get/post请求,此时,请求结束,状态码为0。

解决办法:
1、后端Access-Control-Allow-Headers: * ,不使用通配符 * 。
2、前端 不添加请求头,就不会发送options请求。
3、请求不跨域也不会发送options请求

文章目录一. 故事的起因二. 什么是跨域资源访问三. CORS跨域安全标准1. 简单 跨域请求 2. 复杂 跨域请求 四. 发现问题的步骤1. 对不同硬件平台不同系统进行测试2.确定跨域类型,及接口端的实现五. 解决问题的步骤1. 能否在原生开发层面解决问题:2. 能否通过外部条件解决问题:1. Access-Control-Allow-Origin2. Access-Control-Allow-Credentials3. Access-Control-Expose-Headers六. 结论 一. 故事的起因
问题现象:IOS11, IOS12 手机POST方法,发起的option 请求 之后, 返回 的status为0,客户端就不再发起POST 请求 了,导致 无法 拉取到数据,高版本的IOS手机和android手机都是OK的,服务器也做了跨域设置如下: add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods '*'; add_header Access-Control-A
最近做了一个 基于微信访问的网页系统 发现IOS10.2.1 版本 访问的时候 AJAX 报错,安卓和IOS11.4.1 没有这样的问题. 通过Fiddler抓包发现, AJAX 请求 时 报错信息为 {"Message":"The collection of headers 'accept,content-type,origin' is not allowed."} IOS10.2....
【已解决】(uni-app)IOS 端 H5 应用 无法 发起 请求 请求 状态码 为0,错误描述为request:fail 目录【已解决】(uni-app)IOS 端 H5 应用 无法 发起 请求 请求 状态码 为0,错误描述为request:fail1️⃣ 问题描述2️⃣ 问题分析???? 2.1 分析依赖问题???? 2.2 分析uni-app版本问题???? 2.3 引入vconsole 进一步分析问题3️⃣ 进一步定位问题4️⃣ 解决办法???? 4.1 跨域解决???? 4.2 修改 请求 配置5️⃣ 总结 2.原因: 跨域请求 options 请求 :缺少参数: 请求 信息Access-Control-Request-Headers: accept, content-type, origin 3.nginx反向代理的解决方法:判断是optinos,添加参数Origin,Accept if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Orig...
原文更新链接 https://www.aiprose.com/blog/146 最近有用户反馈在使用微信H5页面的时候,一直提示network error错误,但是本身网络都是正常的,因为网页能正常打开。上网查了下,说后台接口要配置成为HTTPS的,于是我申请了一个ssl证书,通过错误收集软件查看,报错数量确实少了点,但是还是有很多设备报错。而且大部分是 苹果 ios 12系统。结果发现自己的跨域配置有问题。 默认的跨域配置如下: add_header 'Access-Control-Allow-O.
项目 用到XMLHTTPRequest进行数据交互,H5页面嵌入APP,突然一次预发布环境测试遇到status是0;印象 status是1,2,3,4,5开 的三位数。 经过百度得知,是接口 请求 遇到了跨域问题,所以status是0了 此时readyState是4,status!=200 400(错误 请求 ) 服务器不理解 请求 的语法。 404(未找到) 服务器找不到 请求 的网页。例如,对于服务器上不存在的网页经常会 返回 此代码。 500(服务器内部错误) 服务器遇到错误, 无法 完成 请求 。 一、4xx( 请求 错误) 这些 状态码 表示 请求 可能出错,妨碍了服务器的处理。 400(错误 请求 ) 服务器不理解 请求 的语法。 401(未授权) 请求 要求身份验证。对于登录后 请求
因为有自定义 请求 userId和token,所以先会进行options,options后服务端 返回 了,但是前端 浏览器 没有进行post,因为后台设置的headers为*,可能ios13/安卓10一下 浏览器 识别不出来后台允许有自定义 请求 的存在 所以后台将 Access-Control-Allow-Headers: * Access-Control-Allow-Headers: accept, content-type, origin, userid, token 将自定义 请求 和默认 请求
最近写了一个很简单的小项目,以为不会有什么问题,今天突然说出问题了,说ios用户打开没有 请求 到数据。 经测试,安卓,pc,都没有问题,只有ios出问题了。因为这次的涉及到时间,我以为ios时间处理上出问题了,仔细看了看,并不是,于是开启了漫长的寻找bug的过程。 使用vConsole查看接口 请求 情况,发现根本就没有走这个接口,并且 返回 的status值是0. 相当于是接口根本没跑。 查了相关资料,...
var url = "http://192.168.1.12:8092/test.php"; var fromurl = "http://127.0.0.1/index.html"; var fromurl2 = "http://192.168.1.12/index.html"; // 请求 1 $.get(url, {"fromurl": fromurl}, function (req) { $("# ajax _re
CSDN-Ada助手: 非常感谢你的第二篇博客,标题和摘要都非常清晰明了。你对ios部分机型中img标签未设置默认src属性导致js设置src属性不重新渲染页面的问题进行了深入分析,对于这个问题的解决方案给出了很好的建议。 继续创作博客是非常有价值的,因为这样可以帮助更多的人解决问题。你可以继续探讨一些和这个问题相关的主题,比如移动端网页性能优化、浏览器兼容性处理等。这些主题可以帮助读者更好地理解和解决类似的问题。 除了这些,还有一些和该博文相关的扩展知识和技能,虽然没有在标题和摘要中出现,但可能对读者有帮助。比如,你可以介绍一下如何使用媒体查询来适配不同的设备,或者如何使用响应式图片来提高网页加载速度。这些内容可以进一步丰富你的博客,为读者提供更多的解决方案。 再次感谢你的分享,期待看到更多有关移动端开发的精彩文章! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2