Quiero configurar apache para el acceso a varios dominios de encabezado. He intentado varias combinaciones como se sugiere en el número de hilos en el foro. Pero no su trabajo para mí.

Las maneras, he intentado:

1) Especificar dominio en línea diferente a la de la siguiente con Header set :

Header set Access-Control-Allow-Origin "example1.com"
Header set Access-Control-Allow-Origin "example2.com"
Header set Access-Control-Allow-Origin: "example3.com"

Con esta configuración la recolección sólo duran uno e ignorar el resto de todos.

2) Especificar el dominio en línea diferente a la de la siguiente con Header add :

Header add Access-Control-Allow-Origin "example1.com"
Header add Access-Control-Allow-Origin "example2.com"
Header add Access-Control-Allow-Origin: "example3.com"

Con este su muestra a los tres dominios en la cabecera, pero las fuentes no están recibiendo recogido en Firefox.

3.) Trató de Usar SetEnvIf, pero una vez más no su trabajo :

SetEnvIf Origin "http(s)?://(www\.)?(mydomain.com|mydomain2.com)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin

Finalmente, trabajar con «*», pero no quiero utilizar esta.

Por favor ayuda con esto.

  • Has leído esto : stackoverflow.com/a/4730826/550618 para los problemas con el código de respuesta 304?
  • Si yo uso «Encabezado set», luego de su trabajo en FF. Pero en caso de que Su toma sólo la última de dominio 🙁 y quiero configurar para varios dominios.
  • el problema no es set o add, es para agregar el always palabra clave
  • Sigue teniendo el mismo problema. Si puedo usar «siempre» palabra clave con el conjunto de la siguiente manera : Cabecera siempre se establece Access-Control-Allow-Origin «example1.com» de Cabecera siempre se establece Access-Control-Allow-Origin «example2.com» de Cabecera siempre se establece Access-Control-Allow-Origin: «example3.com» Entonces teniendo sólo la última de dominio y las fuentes de trabajo en FF. Por otro lado, si yo uso siempre la palabra clave con agregar la siguiente : Cabecera siempre agregar Access-Control-Allow-Origin «example1.com» Encabezado siempre agregar Access-Control-Allow-Origin «example2.com» Encabezado siempre agregar Access-Control-Allow-Origin: «example3.com» Luego de fuentes no funciona en FF.
  • hola expertos – Puede usted por favor me orienten en esto?
  • Desbordamiento de la pila es un sitio para la programación y desarrollo de las preguntas. Esta pregunta parece ser off-topic porque no es acerca de la programación o de desarrollo. Consulte ¿Qué temas puedo preguntar aquí en el Centro de Ayuda. Tal vez Aplicaciones Web de Intercambio de la Pila, Webmaster de Intercambio de la Pila o Unix & Linux Intercambio de la Pila sería un mejor lugar para preguntar.

InformationsquelleAutor Kuldeep | 2013-12-19

7 Comentarios

  1. 39

    Para 3 dominios, en su .htaccess:

    <IfModule mod_headers.c>
        SetEnvIf Origin "http(s)?://(www\.)?(domain1.org|domain2.com|domain3.net)$" AccessControlAllowOrigin=$0$1
        Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
        Header set Access-Control-Allow-Credentials true
    </IfModule>
    

    He intentado esto y funciona para mí. Déjeme saber si no es para usted.

    • Esta es la única manera, de forma dinámica servir a un único valor, mediante la comprobación de que el host antes de servir. El «siempre » append» o «agregar» no funcionó para mí.
    • Gracias por afirmando 🙂
    • Funciona muy bien para mí. Me preguntaba sobre «$0$1», como muchos otros ejemplo que acabo de usar «$0». Parece que es la robustez cuando se vuelva a usar el mismo .htaccess para diferentes servidores web ($0 obras para Apache).
    • Ya que la Respuesta puede variar dependiendo del «Origen» del campo, tal vez el Vary: Origin encabezado debe estar configurado así (ver stackoverflow.com/questions/25329405/…)
    • Sólo funcionó para mí al salir de la «$1» de distancia. Por alguna razón, «$1» se establece en «s» y por lo tanto no coinciden («domain1.org» no match «dominio1.orgs»).
    • Esto es incorrecto. Debe ser $0, no $0$1. $0$1 se anexará a la coincidencia de grupo 1 a la URL. Esta es la coincidencia de grupo 1: http(s)? por Lo que se anexe s para https orígenes y undefined para http orígenes.
    • De acuerdo, el uso de $0 es el preferido. Pero la respuesta está volviendo loco-¡impresionante! Gracias, George!
    • En el segundo pensamiento, podría ser beneficioso para colocar las partes no deseadas de la solicitud de Origen. Uno podría usar (http(s)?://(myapp(api)?\-(dev|demo)\.azurewebsites\.net|localhost|localhost:4444)).*$, que aceptar varios hosts/url pero en lugar de sólo el protocolo y el servidor en $1.
    • ¿Alguien puede explicarme lo de la ‘e’ significa en la expresión %{AccessControlAllowOrigin}e ?

  2. 17

    A menos que yo estoy entendiendo el manual, debe ser:

    Header always append Access-Control-Allow-Origin: "example1.com"
    Header always append Access-Control-Allow-Origin: "example2.com"
    Header always append Access-Control-Allow-Origin: "example3.com"
    

    El manual indica que el set y add acciones se comportan de la siguiente manera:

    conjunto: «El encabezado de respuesta se establece, en sustitución de cualquiera de las anteriores encabezado con este nombre»

    agregar: «…Esto puede resultar en dos (o más) de las cabeceras de tener el mismo nombre. Esto puede llevar a consecuencias imprevistas…»

  3. 4

    Restringir el acceso a ciertos URIs checkout estos docs:

    CrossOriginRequestSecurity

    En El Lado Del Servidor De Control De Acceso#Apache_examples

    Un truco útil es el uso de una de reescritura de Apache, la variable de entorno, y encabezados para aplicar Access-Control-Allow-* para ciertos URIs. Esto es útil, por ejemplo, para restringir la cruz-las solicitudes de origen a GET /api(.*).peticiones json sin credenciales:

    RewriteRule ^/api(.*)\.json$ /api$1.json [CORS=True]
    Header set Access-Control-Allow-Origin "*" env=CORS
    Header set Access-Control-Allow-Methods "GET" env=CORS
    Header set Access-Control-Allow-Credentials "false" env=CORS
    

    También, en general, de acuerdo a W3 Wiki – CORS Habilitado#For_Apache
    Para exponer el encabezado, puede agregar la siguiente línea dentro del Directorio, Ubicación, y los Archivos de las secciones, o dentro de un .archivo htaccess.

    <IfModule mod_headers.c>
      Header set Access-Control-Allow-Origin "*"
    </IfModule>
    

    Y, puede utilizar agregar en lugar de establecer, pero tenga en cuenta que puede agregar agregar el encabezado varias veces, por lo tanto, es más seguro de usar en conjunto.

  4. 2

    Probar esto, a mí me funciona.
    Aplicar en .htaccess:

    SetEnvIf Origin "^http(s)?://(.+\.)?(domain\.org|domain2\.com)$" origin_is=$0 
    Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is
    
  5. 0

    Será funciona al 100%, se Aplican en el .htaccess:

    # Enable cross domain access control
    SetEnvIf Origin "^http(s)?://(.+\.)?(domain1\.com|domain2\.org|domain3\.net)$" REQUEST_ORIGIN=$0
    Header always set Access-Control-Allow-Origin %{REQUEST_ORIGIN}e env=REQUEST_ORIGIN
    Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
    Header always set Access-Control-Allow-Headers "x-test-header, Origin, X-Requested-With, Content-Type, Accept"
    
    # Force to request 200 for options
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} OPTIONS
    RewriteRule .* /[R=200,L]
    
    • Tanto este como el aprobado respuesta añade un * al final que no es correcto. I. E Si puedo hacer una petición desde localhost:3000 el encabezado de respuesta contiene: Access-Control-Allow-Origin: http://localhost:3000, *
  6. 0

    Para Apache 2.4, he utilizado CONJUNTO de comandos para el servidor web Apache para establecer el Encabezado de forma dinámica.

    <IfModule mod_deflate.c>
      # CORS
      SetEnvIfNoCase Origin "http(s)?://(\w+\.)?(example.com|localhost)(:[0-9]+)?$" AccessControlAllowOrigin=$0
      Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
      Header set Access-Control-Allow-Credentials true
    </IfModule>
    

    AGREGAR comando no funciona para mí.

  7. -2

    Esto funciona para mí en ASP Clásico:

    If Request.ServerVariables("HTTP_ORIGIN") = "http://domain1.com" Then
      Response.AddHeader "Access-Control-Allow-Origin","http://domain1.com"
    ElseIf Request.ServerVariables("HTTP_ORIGIN") = "http://domain2.com" Then
      Response.AddHeader "Access-Control-Allow-Origin","http://domain2.com"
    'and so on
    End If
    
    • La pregunta es acerca de Apache.

Dejar respuesta

Please enter your comment!
Please enter your name here