Pregunta El conjunto de encabezado Access-Control-Allow-Origin en .htaccess no funciona


No puedo entender por qué mi .htaccess la configuración del encabezado no funciona.

Mi .htaccess contenido del archivo:

Header set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

Pero cuando elimino Headery añádelos index.php entonces todo funciona bien

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");

¿Qué me estoy perdiendo?


76
2018-05-17 17:33


origen


Respuestas:


Esto debería funcionar:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

121
2017-07-27 16:19



Solo para el registro, me estaba encontrando con el mismo problema y ninguna de las respuestas funcionó.

Utilicé una herramienta de comprobación de encabezados: http://www.webconfs.com/http-header-check.php

Estaba probando con mi IP (http://192.0.2.1/upload) y lo que regresó fue lo siguiente:

HTTP/1.1 301 Moved Permanently => 
Date => Sat, 10 Jan 2015 04:03:35 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
Location => http://192.0.2.1/upload/
Content-Length => 380
Connection => close
Content-Type => text/html; charset=iso-8859-1

Hubo una redirección y la solicitud AJAX no respeta / sigue los redireccionamientos.

Resultó ser la barra que faltaba al final del dominio (http://192.0.2.1/upload/)

Probé de nuevo con barra al final y obtuve esto a continuación. Se agregó una barra en el guión también, y ahora estaba funcionando.

HTTP/1.1 200 OK => 
Date => Sat, 10 Jan 2015 04:03:53 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By => PHP/5.3.8
Access-Control-Allow-Origin => *
Access-Control-Allow-Methods => PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Headers => *
Content-Length => 1435
Connection => close
Content-Type => text/html

Use esta herramienta para comprobar si sus encabezados son buenos y para solucionar lo que está sucediendo.


13
2018-01-10 04:36



Tengo un alojamiento compartido en GoDaddy. Necesitaba una respuesta a esta pregunta, también, y después de buscar descubrí que es posible.

Escribí un archivo .htaccess y lo puse en la misma carpeta que mi página de acciones. Aquí están los contenidos del archivo .htaccess:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

Aquí está mi llamada ajax:

    $.ajax({
        url: 'http://www.mydomain.com/myactionpagefolder/gbactionpage.php',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        beforeSend: beforeSendHandler,
        success: completeHandler,
        error: errorHandler,
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });

Vea este artículo para referencia:

El conjunto de encabezado Access-Control-Allow-Origin en .htaccess no funciona


7
2018-05-02 15:54



Activé los encabezados del módulo de Apache a2enmod headers, y el problema se resolvió.


6
2017-12-10 04:32



Ten cuidado con:

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

Esto no es juicioso en absoluto para otorgar acceso a todos. Es preferible permitir una lista de servidores de confianza conocidos solo ...

Header add Access-Control-Allow-Origin "http://aaa.example"
Header add Access-Control-Allow-Origin "http://bbb.example"
Header add Access-Control-Allow-Origin "http://ccc.example"

Saludos,


5
2017-10-07 08:55



Pruebe esto en el .htaccess de la carpeta raíz externa

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

Tenga cuidado en: Encabezado agregue Access-Control-Allow-Origin "*" Esto no es juicioso en absoluto para otorgar acceso a todos. Creo que deberías usuario:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "http://example.com"
</IfModule>

3
2017-11-03 08:18



Hice +1 la respuesta de Miro para el enlace al sitio del comprobador de encabezado http://www.webconfs.com/http-header-check.php. Aparece un anuncio desagradable cada vez que lo usa, pero, sin embargo, es muy útil para verificar la presencia del encabezado Access-Control-Allow-Origin.

Estoy leyendo un archivo .json desde javascript en mi página web. Descubrí que agregar lo siguiente a mi archivo .htaccess solucionó el problema al visualizar mi página web en IE 11 (versión 11.447.14393.0):

<FilesMatch "\.(json)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

También agregué lo siguiente a /etc/httpd.conf (archivo de configuración de Apache):

AllowOverride All

El sitio del comprobador de encabezado verificó que el encabezado Access-Control-Allow-Origin ahora se está enviando (¡gracias, Miro!).

Sin embargo, Firefox 50.0.2, Opera 41.0.2353.69 y Edge 38.14393.0.0 recuperan el archivo de todos modos, incluso sin el encabezado Access-Control-Allow-Origin. (Nota: es posible que estén verificando las direcciones IP, ya que los dos dominios que estaba utilizando están alojados en el mismo servidor, en la misma dirección IPv4).

Sin embargo, Chrome 54.0.2840.99 m (64 bits) ignora el encabezado Access-Control-Allow-Origin y falla de todos modos, informando erróneamente:

Ningún encabezado 'Access-Control-Allow-Origin' está presente en el pedido   recurso. Origen '{mi dominio}'por lo tanto, no se permite el acceso.

Creo que esto tiene que ser una especie de "primero". IE está funcionando correctamente; Chrome, Firefox, Opera y Edge tienen errores; y Chrome es el peor. ¿No es eso exactamente lo contrario del caso habitual?


2
2017-12-14 00:32



Después de pasar medio día sin nada trabajando. Usando un servicio de comprobación de encabezado, aunque todo estaba funcionando. El firewall en el trabajo los estaba despojando


0
2018-04-06 17:56