Desactivar los iguales / haciendo XMLHttpRequests dominios Política de Origen en WebKit WebViews?
-
19-09-2019 - |
Pregunta
Me gustaría desactivar la política del mismo origen en XMLHttpRequests en mis propias WebViews embebidos. Tengo control sobre las páginas cargadas / código que está siendo ejecutado en la vista Web, por lo que no se preocupan por la aplicación de la política del mismo origen. Me gustaría hacer peticiones entre dominios.
He intentado implementar el WebPolicyDelegate y WebResourceLoadDelegate pero no parece que haya pedido XMLHttpRequests.
Solución
void WebSettingsImpl::setWebSecurityEnabled(bool enabled)
{
m_settings->setWebSecurityEnabled(enabled);
}
Esperamos que esto es lo que necesita! Usted me puede enviar un mensaje para webkit.
Otros consejos
Creo que tendría dificultades para encontrar modos de hacer eso de una manera que es útil para usted. ¿Ha considerado JSONP en lugar de XHR? http://en.wikipedia.org/wiki/JSON
La descripción de alto nivel es que JSONP utiliza el mismo mecanismo para solicitar secuencias de comandos externos como usted está utilizando anteriormente. La diferencia es que su servidor reconocerá esto y va a empaquetar la respuesta JSON como argumento a un método de devolución de llamada. Cuando su sitio recibe esta 'guión', lo ejecuta con ello devolver los datos directamente en su método de devolución de llamada.
Si usted es capaz de utilizar un marco como jQuery, la mayor parte del lado del cliente podría ser manejado de forma transparente para usted. De hecho, se utilizará prácticamente los mismos métodos que se utilizan para las solicitudes XHR (Ajax). Échale un vistazo aquí: http://api.jquery.com/jQuery.getJSON/
Se podría intentar agregar el encabezado Access-Control-Allow-Origin: *
a la respuesta del servidor. No creo que es soportado por todos los navegadores sin embargo.
Más información: https://developer.mozilla.org/en/HTTP_access_control
Yo estaba buscando la manera de hacer esto en OSX. Resulta WebPreferences tiene un método privado: setWebSecurityEnabled
. Ponga esto en falso y debería funcionar.
http: // trac.webkit.org/browser/trunk/Source/WebKit/mac/WebView/WebPreferences.mm?rev=111350#L1011
Así, por ejemplo:
NSString* noSecurityPreferencesId = @"noSecurity";
WebPreferences* prefs = [[WebPreferences alloc] initWithIdentifier: noSecurityPreferencesId];
[prefs setWebSecurityEnabled: false];
[webView setPreferencesIdentifier: noSecurityPreferencesId];