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.

¿Fue útil?

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];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top