You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Axios在iOS出现Network Error但桌面端正常的问题求助

解决iOS 12.3.1中Axios请求Network Error的问题

我之前也碰到过类似iOS老版本跨域请求的坑,结合你的环境配置和症状,大概率是这几个原因导致的,咱们一步步排查解决:

1. CORS通配符与带自定义头/ Cookie请求的冲突

虽然你提到跨域Cookie读取正常,但iOS 12.x的WebKit内核对Access-Control-Allow-Origin: *的处理非常严格——当请求带有自定义头(比如你的X-AUTH-TOKEN、X-DEVICE-ID)或涉及Cookie时,通配符*是不被允许的,必须指定具体的前端域名。

修改Symfony的CORS配置:

// 替换通配符为明确的前端子域名
$response->headers->set('Access-Control-Allow-Origin', 'https://my.example.com');
// 多域名场景可以动态匹配请求Origin(可选)
// $origin = $request->headers->get('Origin');
// $allowedOrigins = ['https://my.example.com'];
// if (in_array($origin, $allowedOrigins)) {
//     $response->headers->set('Access-Control-Allow-Origin', $origin);
// }

// 必须明确添加允许携带凭证的声明,老iOS WebKit依赖这个
$response->headers->set('Access-Control-Allow-Credentials', 'true');

同时更新Axios配置:

确保请求开启携带凭证的选项:

axios.create({
  baseURL: `${process.env.REACT_APP_API_HOST}${process.env.REACT_APP_API_URI_PREFIX}`,
  withCredentials: true, // 新增这个配置
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
    'X-AUTH-TOKEN': token,
    'X-DEVICE-ID': deviceId
  }
})

2. TLS版本兼容性问题

iOS 12.3.1只支持到TLS 1.2,如果你的API服务器仅启用了TLS 1.3,就会直接导致请求失败。可以用命令行验证服务器的TLS支持:

openssl s_client -connect example.com:443 -tls1_2

如果连接失败,需要在服务器(Nginx/Apache等)配置中启用TLS 1.2协议。

3. 自定义头的CORS声明问题

iOS 12.x的WebKit对Access-Control-Allow-Headers: *的通配符支持不完善,建议明确列出所有自定义请求头:

$response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Accept, X-AUTH-TOKEN, X-DEVICE-ID');

4. Axios版本兼容性

部分新版Axios已经停止对iOS 12的支持,建议降级到已知兼容的版本(比如0.21.4),或者升级到最新稳定版后测试。

先从第1点的CORS配置修改入手,这是老iOS跨域问题最常见的诱因,之后再依次排查TLS版本、头声明和Axios版本,应该就能解决问题了。

内容的提问来源于stack exchange,提问作者user10788387

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:57:49