Attention! Translated article might be found on my English blog.

2015年2月3日火曜日

WebView(not UIWebView)でHTTPリクエストヘッダを付加する

MacOSのWebKitでは、WebResourceLoadDelegateのwebView:resource:willSendRequest:redirectResponse:fromDataSource:が呼ばれたタイミングで個々のリソースに対するリクエストヘッダを変更することができます。
下記の例では、メインフレーム取得時にIf-Modified-Sinceを付加しています。
#pragma mark WebResourceLoadDelegate

- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource {
    if ([[sender mainFrameURL] isEqualToString:[[request URL] absoluteString]] && self.lastModified) {
        [(NSMutableURLRequest *)request addValue:self.lastModified forHTTPHeaderField:@"If-Modified-Since"];
    }
    return request;
}

 なお、self.lastModifiedは前回リクエスト時にレスポンスヘッダのLast-Modifiedを保存したものです。