c# - developing - uwp vs wpf
Cambiar el User-Agent predeterminado en WebView UWP (1)
Necesito configurar un UA personalizado y yo uso
httpRequestMessage.Headers.Add("User-Agent", "blahblah");
theWebView.NavigateWithHttpRequestMessage(httpRequestMessage);
Pero si hago clic en cualquier enlace en la página, este UA se borrará y establecerá un UA predeterminado.
Encontré la misma pregunta WebView: ¿Definir User-Agent en cada solicitud, pero tal vez se corrigió en 1607?
WebView no es un navegador de propósito general, tiene algunas "limitaciones" que no son compatibles ahora. No hay API que pueda establecer el User-Agent predeterminado que se utilizó en cada solicitud. Como solución, podemos usar el evento WebView.NavigationStarting junto con el método WebView.NavigateWithHttpRequestMessage para configurar User-Agent en cada solicitud.
Para obtener más información acerca de cómo hacer esto, consulte esta respuesta . El punto clave aquí es eliminar el controlador para el evento NavigationStarting
y cancelar la navegación en la solicitud original y luego agregar el controlador después de NavigateWithHttpRequestMessage
para asegurarse de que el evento NavigationStarting
pueda capturar las próximas solicitudes como las siguientes:
WebView wb = new WebView();
wb.NavigationStarting += Wb_NavigationStarting;
...
private void NavigateWithHeader(Uri uri)
{
var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri);
requestMsg.Headers.Add("User-Agent", "blahblah");
wb.NavigateWithHttpRequestMessage(requestMsg);
wb.NavigationStarting += Wb_NavigationStarting;
}
private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
wb.NavigationStarting -= Wb_NavigationStarting;
args.Cancel = true;
NavigateWithHeader(args.Uri);
}
Además, le invitamos a votar en UserVoice para compartir sus comentarios.