Swift 中为 WebView 添加 Referer 头信息
要在 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 著作权归作者所有。请勿转载和采集!