[英]How to set http header for all requests being loaded in a UIWebView?
我嘗試了以下方法:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSLog([request valueForHTTPHeaderField:@"User-Agent"]);
if ([[request valueForHTTPHeaderField:@"User-Agent"] isEqualToString:@"CustomName"]) {
return YES;
}
else {
NSMutableURLRequest *mutable_request= [request mutableCopy];
[mutable_request setValue:@"CustomName" forHTTPHeaderField:@"User-Agent"];
request = [mutable_request copy];
[self.web loadRequest:request];
return NO;
}
}
我什至將以下代碼行添加到viewDidLoad()方法:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"CustomName",@"User-Agent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dict];
但是,每當我嘗試使用[self.web loadRequest:request]
加載請求時,都會進入無限循環,並且HTTPHeaderField“ User-Agent”的值始終顯示為
"Mozilla/5.0 (iPhone; CPU iPhone OS 10_10_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411"
而不是“ CustomName”。
NSLog(@" web url to load : %@",urlToLoad);
NSMutableURLRequest *requestObj = [NSMutableURLRequest requestWithURL:urlToLoad];
[requestObj setValue:[NSString stringWithFormat:@"%@ Safari/528.16", [requestObj valueForHTTPHeaderField:@"User-Agent"]] forHTTPHeaderField:@"User_Agent"];
requestObj.timeoutInterval = 120;//Request Timeout interval added for request
[requestObj setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];//added for removing cache data of webView
[webview loadRequest:requestObj];
我找到了答案,我不得不將HTTPHeader“ User-Agent”替換為“ UserAgent”。 刪除連字符(-)對我有用。
將以下方法添加到我的AppDelegate.h中也可以
+ (void)initialize {
NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"CustomName", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.