URLRequest header 永久
URLRequest header permanent
我有 webView,我在其中加载了一些 url。我需要为该 URLRequest 设置自定义 header。对于第一个请求,它按预期工作,服务器端收到 header 并相应地显示内容。但是,如果我从显示的页面打开另一个 link,header 将丢失,并且在没有 header.
的情况下发送请求
我的幸运猜测是,header 只是第一次添加,每次发送加载 url 的请求时我都必须添加它。但是我找不到在哪里可以这样做的方法。
目前我在 viewDidLoad
中设置 header
override func viewDidLoad() {
super.viewDidLoad()
myWebView.delegate = self
let url = URL(string: "https://mywebsite.com");
var requestobj = URLRequest(url: url!);
requestobj.addValue("my_request_id", forHTTPHeaderField: "X-Requested-With");
myWebView.loadRequest(requestobj);
}
我是不是遗漏了什么或者我应该为每个请求在不同的地方添加 header?
是的,您应该在每次创建请求时添加自定义 headers。
好的,感谢 iphonic,指向 shouldStartLoadWith。我可以用它来理解是请求新的还是旧的,并通过这样做来解决我的问题:
func webView(_ webView: UIWebView,
shouldStartLoadWith request: URLRequest,
navigationType: UIWebViewNavigationType) -> Bool{
if(navigationType == UIWebViewNavigationType.linkClicked)
{
var req = request;
req.addValue("my_request_id", forHTTPHeaderField: "X-Requested-With");
self.myWebView.loadRequest(req);
return false;
}
else {
return true;
}
}
所以我在这里检查,如果导航类型是 clickedLink,那么我不加载当前请求,而是复制它,重新应用自定义 header 并将其加载到 myWebView 中。
如果 navigationType 不是 linkClicked,我将不做任何更改继续请求。
我有 webView,我在其中加载了一些 url。我需要为该 URLRequest 设置自定义 header。对于第一个请求,它按预期工作,服务器端收到 header 并相应地显示内容。但是,如果我从显示的页面打开另一个 link,header 将丢失,并且在没有 header.
的情况下发送请求我的幸运猜测是,header 只是第一次添加,每次发送加载 url 的请求时我都必须添加它。但是我找不到在哪里可以这样做的方法。
目前我在 viewDidLoad
中设置 headeroverride func viewDidLoad() {
super.viewDidLoad()
myWebView.delegate = self
let url = URL(string: "https://mywebsite.com");
var requestobj = URLRequest(url: url!);
requestobj.addValue("my_request_id", forHTTPHeaderField: "X-Requested-With");
myWebView.loadRequest(requestobj);
}
我是不是遗漏了什么或者我应该为每个请求在不同的地方添加 header?
是的,您应该在每次创建请求时添加自定义 headers。
好的,感谢 iphonic,指向 shouldStartLoadWith。我可以用它来理解是请求新的还是旧的,并通过这样做来解决我的问题:
func webView(_ webView: UIWebView,
shouldStartLoadWith request: URLRequest,
navigationType: UIWebViewNavigationType) -> Bool{
if(navigationType == UIWebViewNavigationType.linkClicked)
{
var req = request;
req.addValue("my_request_id", forHTTPHeaderField: "X-Requested-With");
self.myWebView.loadRequest(req);
return false;
}
else {
return true;
}
}
所以我在这里检查,如果导航类型是 clickedLink,那么我不加载当前请求,而是复制它,重新应用自定义 header 并将其加载到 myWebView 中。 如果 navigationType 不是 linkClicked,我将不做任何更改继续请求。