2011-08-14 13 views
11

Estoy haciendo una extensión de Chrome que extrae datos de mi propio servidor. Utiliza aproximadamente 4 httpRequests a la vez, pero a veces obtengo un error de consola de la siguiente manera:Access-Control-Allow-Origin en la extensión de cromo

XMLHttpRequest cannot load http://apps.radionsm.lv/apps/system/index.php?request=now. Origin chrome-extension://egkddfmbidfobhchndockbhjancbpfkd is not allowed by Access-Control-Allow-Origin. para todos a veces no.

Si envío header('Access-Control-Allow-Origin: *'); ¿Esto lo arreglará?

Respuesta

18

Extensiones Chrome tienen dos "modos" cuando hace peticiones XHR entre dominios:

1) Si el dominio está en la sección "Permisos" del archivo manifest.json - La solicitud no tiene un " Origen "encabezado, y siempre tiene éxito.

2) Si el dominio no está en "permisos" - La solicitud incluye un encabezado "Origen" con el valor "chrome-extension: // ..." Esto indica que la solicitud es CORS, y el la respuesta debe tener un encabezado válido de Access-Control-Allow-Origin para tener éxito.

25

Está intentando compartir recursos de origen cruzado (CORS). La mala noticia es que sin un servidor como intermediario no hay forma de hacerlo en una página web normal. La buena noticia es que en una extensión de Chrome puede solicitar permiso para acceder a cualquier url que desee. Simplemente ponga algo como esto en su archivo manifest.json.

Permitir conexiones a su sitio:

"permissions": [ 
    "http://*.radionsm.lv/" 
    ], 

permitir conexiones a cualquier sitio:

"permissions": [ 
    "http://*/" 
    ], 

Cuando el usuario instala la extensión de Chrome les informará de los permisos necesarios en un cuadro de diálogo antes de la la finalización de la instalación.

+9

Vale la pena mencionar: tuve que eliminar y volver a instalar la extensión para que los permisos se actualicen desde el archivo de manifiesto. –

+1

He subido el comentario de Geva Tal aquí, y quiero enfatizar aún más que realmente tiene que desinstalar su extensión y luego reinstalarla. Solo recargar la extensión desde Chrome no es suficiente. – erikprice

Cuestiones relacionadas