Hinzufügen eines beliebigen Header-Feldes zum NSURLRequest-Argument in shouldStartLoadWithRequest scheint funktionieren, weil die Anfrage auf setValue:ForHTTPHeaderField antwortet - aber es nicht tatsächlich funktionieren - die Anfrage wird ohne den Header gesendet.
Also habe ich diesen Workaround in shouldStartLoadWithRequest verwendet, der die gegebene Anforderung einfach in eine neue veränderbare Anforderung kopiert und sie neu lädt. Dadurch wird die Kopfzeile, die gesendet wird, tatsächlich geändert.
if ( [request valueForHTTPHeaderField:@"MyUserAgent"] == nil )
{
NSMutableURLRequest *modRequest = [request mutableCopyWithZone:NULL];
[modRequest setValue:@"myagent" forHTTPHeaderField:@"MyUserAgent"];
[webViewArgument loadRequest:modRequest];
return NO;
}
Leider ist es damit immer noch nicht möglich, den user-agent http-Header zu überschreiben, der offenbar von Apple überschrieben wird. Um ihn zu überschreiben, müssten Sie wohl selbst eine NSURLConnection verwalten.