在UIWebView中指定HTTP referer

时间:2012-08-08 05:57:39

标签: iphone objective-c ipad uiwebview http-referer

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

我经历过this但仍然没有成功。

1。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];

但是还没有成功。

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

希望我能清楚地提出问题。

2 个答案:

答案 0 :(得分:3)

您可以使用以下代码

设置默认用户代理
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Safari/528.16", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

很好地解释了here

答案 1 :(得分:0)

我不确定你的情况到底是什么。但对我来说,只需在baseURL中设置-loadHTMLString:baseURL:;参数,就会自动将HTTP标头Referer添加为baseURL到HTML页面下的所有传出请求。