在UIWebView中指定HTTP referer

问题描述:

如何在嵌入式UIWebView中设置HTTP referer?在UIWebView中指定HTTP referer

我已经通过this但仍没有成功。

viewDidLoad,我写了这个代码,

[objWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"MY_URL"]]]; 

这里是我的代码:

- (BOOL) webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType) navigationType 
{ 
    NSDictionary *headers = [request allHTTPHeaderFields]; 
    BOOL hasReferer = [headers objectForKey:@"Referer"]!=nil; 
    if (hasReferer) { 
     // .. is this my referer? 
     return YES; 
    } else { 
     // relaunch with a modified request 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       NSURL *url = [request URL]; 
       NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 
       [request setHTTPMethod:@"GET"]; 
       [request setValue:@"Referer link" forHTTPHeaderField:@"Referer"]; 
       [objWebView loadRequest:request]; 
      }); 
     }); 
     return NO; 
    } 
} 

2.我试过这也viewDidLoad

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"MY_URL"]]; 
[request setValue:@"Referel URL" forHTTPHeaderField:@"Referer"]; 
[objWebView loadRequest:request]; 

但是还没有成功。

请帮我解决这个问题,或者告诉我这个代码有没有问题?

希望我明确提出了问题。

+0

您是否尝试过直接修改传递给您的请求(而不是启动新的请求)? – 2012-08-08 06:11:29

+0

值得注意的是,你依靠范围来区分两个不同的变量,这两个变量都被称为'request'(一个块可以访问它的父范围)。换句话说,你在范围内有一个名为'request'的变量,然后创建它的另一个版本。这不完全错误,但可以混淆,并降低可读性/可维护性 – 2012-08-08 06:14:52

+0

@ctrahey请参阅我的更新的问题..可以请告诉我什么是错误的,并给我任何建议,这个 – 2012-08-08 06:17:03

您可以使用下面的代码

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Safari/528.16", @"UserAgent", nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; 

这是很好的解释here默认的用户代理设置。

+0

谢谢珍妮斯..它工作.. – 2012-08-09 04:17:06