You need to enable JavaScript to run this app. WKWebview页面跳转被安全规则拦截 仅iOS14.2版本复现
优惠活动
大模型
产品
解决方案
定价
更多

WKWebview页面跳转被安全规则拦截 仅iOS14.2版本复现

WKWebView iOS14.2 页面跳转403拦截问题排查方案
  • 已知问题特征:问题仅复现于iOS 14.2版本,iOS13及更低版本、Android端均正常;相同代码生产环境运行正常,抓包确认存在非主动触发的多次请求,服务端返回403状态码;Xcode回调报错为 Frame load interrupted,已开启ATS全量允许配置仍无效

1. 优先核查WKWebView跳转代理的处理逻辑

iOS14.2版本的WKWebView对WKNavigationDelegate的回调逻辑存在特性变更:对301/302跳转默认会触发两次decidePolicyForNavigationAction回调,第一次是原始请求,第二次是跳转后的请求,如果你的代理逻辑里没有区分跳转类型,误将两次请求都调用了decisionHandler(WKNavigationActionPolicyAllow),就会导致重复请求触发服务端防重放/防CSRF安全规则。
解决代码示例:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    // 仅处理主帧主动触发的导航,忽略自动跳转的次帧/预加载请求
    if (navigationAction.targetFrame.isMainFrame && navigationAction.navigationType == WKNavigationTypeLinkActivated) {
        // 你的自定义跳转逻辑
        decisionHandler(WKNavigationActionPolicyAllow);
    } else if (navigationAction.navigationType == WKNavigationTypeOther) {
        // 3xx自动跳转走系统默认处理,不要额外追加逻辑
        decisionHandler(WKNavigationActionPolicyAllow);
        return;
    }
    // 其他非预期请求直接拦截
    decisionHandler(WKNavigationActionPolicyCancel);
}

Swift版本对应调整代理逻辑即可。

2. 核查请求头差异

iOS14.2的WKWebView默认User-Agent会新增额外字段,且3xx跳转时的Referer字段和低版本iOS存在差异:

  • 对比iOS13和iOS14.2的抓包请求头,确认User-Agent、Referer、Origin三个字段是否存在差异
  • 若服务端安全规则校验了上述字段,可同步第三方服务商确认是否新增了对应字段的校验逻辑,部分厂商灰度发布时会对新UA的请求新增更严格的拦截规则

3. 禁用WKWebView预加载特性

iOS14.2新增了WKWebView的预加载优化,会对页面内的跳转链接提前发起预请求,该请求不在业务层感知范围内,也会触发多次请求:
可通过配置关闭预加载相关特性:

let config = WKWebViewConfiguration()
if #available(iOS 14.0, *) {
    config.preferences.isFraudulentWebsiteWarningEnabled = false
    // 禁用自动HTTPS升级预请求
    config.upgradesKnownHostsToHTTPS = false
}

4. 临时验证方案

如果需要快速确认是否是服务端安全规则问题,可在测试环境将iOS14.2的UA修改为iOS13的正常UA,确认是否能正常加载:

[webView setCustomUserAgent:@"iOS13设备上抓包获取的正常UA"];

如果修改UA后恢复正常,即可确认是服务端针对iOS14.2的UA新增了拦截规则,和第三方服务商同步该情况即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:00:01