iOS - 无法添加 URLRequest 的 http header
iOS - not able to add http header of URLRequest
我正在尝试将 http header 添加到我正在 WKWebView 中加载的 URLRequest。
我试过这段代码:
var urlRequest = URLRequest(url: URL(string: "url")!)
urlRequest.addValue("value", forHTTPHeaderField: "key")
self.viewerWebKit.load(urlRequest)
还有这个:
var urlRequest = URLRequest(url: URL(string: "url")!)
urlRequest.setValue("value", forHTTPHeaderField: "key")
self.viewerWebKit.load(urlRequest)
但是当我使用此代码打印 http headers 时:
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
let headers = (navigationResponse.response as! HTTPURLResponse).allHeaderFields
for (key,value) in headers {
print("key \(key) value \(value)")
}
decisionHandler(.allow)
}
未添加或设置任何内容。我做错了什么?
optional func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
使用这个委托函数。您可以在 navigationAction.request 中找到 headers 的请求。
URLRequest 不可变所以如果你想在那个请求中添加 header 你需要让它 mutable.use 这个扩展来添加 header .
extension URLRequest {
internal mutating func addHeaders() {
let mutableRequest = ((self as NSURLRequest).mutableCopy() as? NSMutableURLRequest)!
mutableRequest.setValue("your header", forHTTPHeaderField: "key")
self = mutableRequest as URLRequest
}
}
}
在你想设置的地方使用Header:
request.addHeaders()
我正在尝试将 http header 添加到我正在 WKWebView 中加载的 URLRequest。
我试过这段代码:
var urlRequest = URLRequest(url: URL(string: "url")!)
urlRequest.addValue("value", forHTTPHeaderField: "key")
self.viewerWebKit.load(urlRequest)
还有这个:
var urlRequest = URLRequest(url: URL(string: "url")!)
urlRequest.setValue("value", forHTTPHeaderField: "key")
self.viewerWebKit.load(urlRequest)
但是当我使用此代码打印 http headers 时:
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
let headers = (navigationResponse.response as! HTTPURLResponse).allHeaderFields
for (key,value) in headers {
print("key \(key) value \(value)")
}
decisionHandler(.allow)
}
未添加或设置任何内容。我做错了什么?
optional func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
使用这个委托函数。您可以在 navigationAction.request 中找到 headers 的请求。
URLRequest 不可变所以如果你想在那个请求中添加 header 你需要让它 mutable.use 这个扩展来添加 header .
extension URLRequest {
internal mutating func addHeaders() {
let mutableRequest = ((self as NSURLRequest).mutableCopy() as? NSMutableURLRequest)!
mutableRequest.setValue("your header", forHTTPHeaderField: "key")
self = mutableRequest as URLRequest
}
}
}
在你想设置的地方使用Header:
request.addHeaders()