2012-02-27 9 views
16

Quiero configurar apache para permitir XMLHttpRequests desde múltiples, pero no todos los dominios.¿Cómo configurar apache para manejar múltiples dominios con el encabezado Access-Control-Allow-Origin?

Esto funciona:

Header set Access-Control-Allow-Origin "*" 

Pero no es seguro, quiero permitir que los dominios especificados por mí, así que después de un poco de google llegué a esto:

Header set Access-Control-Allow-Origin "http://domain1.com http://domain2.com" 

Pero esto sólo recoge primer dominio, el segundo no está permitido. ¿Cómo especificar correctamente varios dominios?

Respuesta

35

puede utilizar SetEnvIf en su archivo .htaccess o en el archivo de host virtual (en el interior "Directorio" grupo):

<IfModule mod_headers.c> 
    SetEnvIfNoCase Origin "https?://(www\.)?(mydomain\.com|mydomain2\.com)(:\d+)?$" AccessControlAllowOrigin=$0 
    Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin 
</IfModule> 

Con este código se puede permitir el acceso desde

  • "midominio. com "y" midominio2.com "
  • con o sin" www ". delante
  • con o sin número de puerto
  • HTTP o HTTPS

Puede agregar varios dominios separados | o puede usar regexp para configurar diferentes subdominios o patrones.

+0

primera sugerencia que he probado que funciona de forma fiable –

+3

Grande, excepto la mía sólo funcionaba si pongo 'Cabecera set' en lugar de' add' cabecera. –

+2

Corrígeme si me equivoco, pero creo que debes eliminar los $ 1 de la segunda línea. Con esto presente, cualquier solicitud sobre https fallará, porque $ 1 captura la 's' en https y la agrega al final de la url permitida (por lo que terminas con .coms). – jonathanm

-1
Header always append Access-Control-Allow-Origin: "http://domain1.com" 
Header always append Access-Control-Allow-Origin: "http://domain2.com" 
+2

Agregue una explicación con la respuesta de cómo esta respuesta ayuda OP en la edición de la edición actual –

+0

Esto no funciona ya que el encabezado 'Access-Control-Allow-Origin' solo permite un valor. Así que mientras esto sería una forma válida de definir múltiples valores para un encabezado que permitió entradas múltiples, este no es uno de esos casos. – jtimmins

Cuestiones relacionadas