Фактически добавление любого поля заголовка к аргументу NSURLRequest в shouldStartLoadWithRequest кажется работающим, потому что запрос отвечает на setValue: ForHTTPHeaderField - но на самом деле не работает - запрос рассылается без заголовка.
Так что я использовал этот обходной путь в shouldStartLoadWithRequest, который просто копирует данный запрос в новый изменяемый запрос и перезагружает его. Фактически это изменяет отправляемый заголовок.
if ( [request valueForHTTPHeaderField:@"MyUserAgent"] == nil )
{
NSMutableURLRequest *modRequest = [request mutableCopyWithZone:NULL];
[modRequest setValue:@"myagent" forHTTPHeaderField:@"MyUserAgent"];
[webViewArgument loadRequest:modRequest];
return NO;
}
К сожалению, это по-прежнему не позволяет переопределить HTTP-заголовок user-agent, который, очевидно, перезаписывается Apple. Я думаю, что для переопределения вам придется самостоятельно управлять NSURLConnection.