La Red de Conocimientos Pedagógicos - Currículum vitae - En el desarrollo de Android, la vista web se utiliza a menudo para mostrar páginas web o páginas h5, lo cual es un problema entre dominios.

En el desarrollo de Android, la vista web se utiliza a menudo para mostrar páginas web o páginas h5, lo cual es un problema entre dominios.

1. Lectura de cookies entre dominios

¿Qué es entre dominios? En pocas palabras, los nombres de dominio son diferentes. Todos sabemos que en una PC usamos un navegador para acceder a una URL. Diferentes URL almacenarán información de cookies localmente para lograr funciones como el inicio de sesión automático. En PC, diferentes nombres de dominio no pueden leer la información de las cookies de otros dominios (desarrolladores web no profesionales, indiquen si hay algún malentendido).

Sin embargo, antes de la API 23 en Android, las cookies se podían leer entre dominios. Por ejemplo, un dominio escribe una cookie con un ID de usuario y un dominio puede leer este valor. Sin embargo, a las 23:00, el sistema establece el valor en falso, por lo que ya no se permiten lecturas entre dominios. ¿Qué pasa si su aplicación tiene requisitos de lectura entre dominios? Se puede abrir de las siguientes maneras:

/* * *Establecer lectura de cookies entre dominios*/

public final void setaccepthirdpartycookies(){

/ /Target 23 El valor predeterminado es falso, así que configúrelo manualmente en verdadero

if (build. SDK_INT gt = build. version code. LOLLIPOP) { cookiemanager(). setaccepthirdpartycookies(webView, true);

}?

}

2. Carga mixta http/https

En esta etapa, muchos sitios web cambiados a acceso https. https puede mejorar la seguridad del acceso a sitios web y evitar el robo de información. Si todas las páginas web son https y los enlaces en las páginas web son todos https, no habrá problema de mezcla (área de texto https, carga de archivos de imagen http). Sin embargo, en esta etapa, muchos recursos no se han cambiado al acceso https y los enlaces http a menudo están incrustados en las páginas. Esta página web mixta no se procesa y es incorrecto cargarla directamente. ¿Cómo solucionar este problema?

if(build.SDK_INT gt=build.versioncode.Lollipop){?

configuración web . setmixedcontentmode(configuración web.MIXED _ CONTENT _ ALWAYS _ ALLOW);

}

Esta también es una función con diferentes versiones. El valor predeterminado antes de api23 era la carga mixta, pero a las 23:00, el valor predeterminado se convirtió en MIXED_CONTENT_NEVER_ALLOW, por lo que si se necesita una carga mixta, establezca setMixedContentMode en MIXED_CONTENT_ALWAYS_ALLOW.

3. Si el problema de acceso entre dominios no se puede resolver, puede intentar establecer la siguiente configuración para webview, que ha resuelto el problema

If (Build. SDK _; INT gt= 16) {

Clase clazz =webView.getSettings().

getClass();

método método = clazz . get método(" setAllowUniversalAccessFromFileURLs ", boolean . class);

if (método != null) {

método . invoke(webview . get settings(), verdadero

}

}

} catch(illegalargumentexception){

e. printstacktrace();

} catch(NoSuchMethodException e){

e. printstacktrace();

} catch(IllegalAccessException e){

e . printstacktrace();

} catch(InvocationTargetException e){

e .