【发布时间】:2021-07-16 06:32:24
【问题描述】:
我在 WKWebView 中传递自定义标题。但是在重定向标头上会更新为新标头。 例如,我在浏览器中输入了“MyName”,现在打印语句Referer 已更改“Referer”,它将打开搜索结果:“https://www.google.com/” 如何在重定向中保留自定义标头。
在 WKWebView, decidePolicyFor navigationAction: WKNavigationAction 中,函数头在重定向时得到更新。
navigationAction.request.setValue("/App/app/iOS", forHTTPHeaderField: "Referer")这不行
import WebKit
class WKWEBViewController: UIViewController, WKNavigationDelegate {
private var wkWebView: WKWebView!
var loadURLString = "https://www.google.com"
var customHeaders:[String:String] = ["Referer":"/AppleApp/app/iOS"]
override func viewDidLoad() {
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
loadURL()
}
private func loadURL() {
let config = WKWebViewConfiguration()
wkWebView = WKWebView(frame: UIScreen.main.bounds, configuration: config)
wkWebView.navigationDelegate = self
wkWebView.backgroundColor = .white
wkWebView.scrollView.backgroundColor = .white
view.backgroundColor = .white
view.addSubview(wkWebView)
if let pdfurl = URL(string: loadURLString) {
var urlRequest = URLRequest(url: pdfurl)
if customHeaders.count != 0 {
for obj in customHeaders {
urlRequest.addValue(obj.value, forHTTPHeaderField: obj.key)
}
}
wkWebView.load(urlRequest)
}
}
}
extension WKWEBViewController {
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let request = navigationAction.request
print("URl--->", request.url)
if let headers = request.allHTTPHeaderFields {
print("Headers: \(headers)")
} else {
print("Nope, sir")
}
decisionHandler(.allow)
}
}
【问题讨论】:
-
那些客户标题是什么?
-
之前
var customHeaders:[String:String] = ["Referer":"/AppleApp/app/iOS"]之后"Referer": "https://www.google.com/"@ElTomato