javascript - georreferenciación - Política de seguridad del contenido: no se puede cargar la API de Google en la extensión de Chrome
georreferenciación google maps api (2)
Luché con este problema durante las últimas 12 horas y finalmente lo hice funcionar. ¿Por qué tardó tanto? Porque me echaron del camino varias veces. En primer lugar, los cables falsos:
"Hazlo HTTPS" - No importa. Mi extensión de Chrome ahora realiza llamadas HTTP regulares a un dominio diferente y funciona bien. (ACTUALIZACIÓN: Un poco más de aclaración. El mito de "hágalo https" está arraigado en un problema similar que las personas tienden a tener cuando se trata de cargar SCRIPT. Si necesita traer un archivo .js externo, entonces sí, debe modifique su content_security_policy e incluya el nombre de host adecuado, que parece que solo acepta https. Tenga en cuenta que esto es diferente a golpear un nombre de host externo para algo como los servicios REST. Como dije antes, esto no requiere la modificación de la política content_security_, ni https. )
"Use JSONP en sus llamadas AJAX de JQuery": esta podría ser una manera de abordar AJAX de dominio cruzado en páginas web normales, pero no es necesaria en una extensión de Chrome debido a la Política de seguridad de contenido incorporada. Además, implementar JSONP suena como un PITA porque requiere cambios en el lado del servidor para manejar el parámetro de devolución de llamada (o algo así, todavía no estoy seguro). En cualquier caso, no es necesario.
"Lío con la cadena de Política de Seguridad de Contenido (CSP) en su extensión" - En la versión 2 del manifiesto, la cadena predeterminada funciona bien: "script-src ''self''; object-src ''self''". Ni siquiera tienes que especificarlo explícitamente. Lo que necesita es un para incluir el dominio que está tratando de golpear desde la extensión como un valor de "permiso".
La solución:
Elimine todos los javascript en línea de su extensión. Consíguelo en un archivo .js separado. Sospecho que para la mayoría de los archivos html con cualquier cantidad decente de javascript, este proceso apestará. Por suerte para mí, todo lo que tenía era una carga del cuerpo que pude mover a un archivo js separado como evento de carga de ventana.addlistener en su lugar.
La página que realmente necesita leer para superar este problema se encuentra aquí: https://developer.chrome.com/apps/contentSecurityPolicy
Esto es relativo a una extensión de Chrome. Estoy probando uno simple que utiliza la API de Google Chart
Tengo este código en mi documento html "popup.html", que se carga al hacer clic en el icono.
<!doctype html>
<html>
<head>
<script type="text/javascript" src="js/libs/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="js/popup.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi?key=xxxxxxxxxxx"></script>
[...]
</body>
</html>
Recibo el siguiente mensaje:
Se negó a cargar el script ''http://www.google.com/jsapi?key=xxxxxxxxxxx'' porque viola la siguiente directiva de Política de seguridad de contenido: "script-src ''self'' chrome-extension-resource:".
Entendí que es algo relacionado con los permisos, intenté modificar mi archivo Manifest pero sin éxito:
{
[...]
"manifest_version": 2,
"permissions": ["http://*.google.com/"],
"content_security_policy": "script-src ''self'' http://www.google.com; object-src ''self''",
}
¿Alguna idea?
Solo haz que use el protocolo https
lugar. El error que está recibiendo está relacionado con la Política de seguridad del contenido .
Consulte la sección Relaxing the default policy
de la página. Menciona que solo puede incluir en la lista blanca HTTPS
, chrome-extension
y chrome-extension-resource
.