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

如何强制iOS在标准HTTP资源加载请求中添加Origin与X-Requested-With头?

iOS图片加载请求添加Origin/X-Requested-With头的解决方案

iOS的WebView(包括UIWebView和WKWebView)在通过<img>这类标准标签加载图片时,确实会自动省略Origin和X-Requested-With头,而且没有系统级的开关能强制让这类请求带上这两个头。给你几个可行的替代思路:

  • 自定义加载图片后注入页面:放弃直接用<img src="xxx">的原生加载方式,改用原生代码通过URLSession发起请求,手动带上Origin和X-Requested-With头,拿到图片数据后转成base64格式的Data URI,再通过JS把这个URI设置给页面里的<img>标签。示例代码:

    // 构建带请求头的图片请求
    var request = URLRequest(url: URL(string: "https://mydomain.com/file/img1.png")!)
    request.setValue("你的Origin值", forHTTPHeaderField: "Origin")
    request.setValue("XMLHttpRequest", forHTTPHeaderField: "X-Requested-With")
    
    // 发起请求并处理结果
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data else { return }
        let base64 = data.base64EncodedString()
        let mimeType = response?.mimeType ?? "image/png"
        let dataURI = "data:\(mimeType);base64,\(base64)"
        
        // 在WebView中执行JS替换图片地址
        self.webView?.evaluateJavaScript("document.querySelector('img[src=\"https://mydomain.com/file/img1.png\"]').src = '\(dataURI)'", completionHandler: nil)
    }
    task.resume()
    
  • 拦截WebView请求并替换:利用WKWebView的WKURLSchemeHandler功能,注册一个自定义Scheme(比如myapp://),页面里的<img>写成<img src="myapp://mydomain.com/file/img1.png">。在自定义的Scheme Handler中,将自定义Scheme的请求转换成标准HTTPS请求,带上需要的头,拿到数据后返回给WebView。这种方式能批量处理所有图片请求,无需逐个修改页面元素。

  • 调整服务器校验逻辑:如果前面的方案实现成本太高,可以考虑对静态资源(如图片)放宽校验规则——毕竟图片这类资源的风险相对API接口更低。比如服务器仅校验/api/路径下的请求头,对/file/这类静态资源路径跳过Origin和X-Requested-With的校验,或者改用Cookie、自定义URL参数来做身份验证,替代这两个头的作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:13