要在 Swift 中为 WebView 添加 Referer,您可以通过设置 URLRequest 的 HTTP 头来实现。以下是一个示例代码:

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 创建WebView实例
        webView = WKWebView(frame: view.bounds)
        webView.navigationDelegate = self
        view.addSubview(webView)

        // 设置Referer
        if let url = URL(string: 'http://example.com') {
            var request = URLRequest(url: url)
            request.addValue('http://referer-example.com', forHTTPHeaderField: 'Referer')
            webView.load(request)
        }
    }

    // WKNavigationDelegate方法,用于处理WebView的导航事件
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

        // 检查是否为主框架的导航事件
        if navigationAction.navigationType == .other && navigationAction.targetFrame?.isMainFrame == true {

            // 获取请求的URL
            if let url = navigationAction.request.url {

                // 检查URL是否为目标网页的URL
                if url.absoluteString == 'http://example.com' {

                    // 获取Referer
                    if let referer = navigationAction.request.allHTTPHeaderFields?['Referer'] {
                        print('Referer: (referer)')
                    }
                }
            }
        }

        // 允许WebView继续导航
        decisionHandler(.allow)
    }
}

在上面的例子中,我们首先创建了一个 WKWebView 实例并设置了其导航代理为当前视图控制器。然后,我们创建了一个 URL 请求并添加了 Referer 的 HTTP 头。最后,我们加载了该请求。在导航代理的 decidePolicyFor 方法中,我们检查了导航事件的 URL 是否为目标网页的 URL,并获取了 Referer 的值。


原文地址: https://www.cveoy.top/t/topic/piWk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录