.htaccess - missing - razón encabezado cors access control allow origin faltante
El conjunto de encabezado Access-Control-Allow-Origin en.htaccess no funciona (8)
No puedo entender por qué mi configuración de encabezado .htaccess
no funciona.
Mi contenido de archivo .htaccess
:
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 Header
los Header
y los agrego en index.php
, 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?
Activé los encabezados del módulo de Apache a2enmod headers, y el problema se resolvió.
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
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"
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 recurso solicitado. El origen '' {mydomain} '' no está, por lo tanto, permitido.
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?
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>
Solo para el registro, me estaba encontrando con el mismo problema y ninguna de las respuestas funcionó.
Utilicé una herramienta de reclamo de encabezados: http://www.webconfs.com/http-header-check.php
Estaba probando con mi IP ( http://xxx.xxx.xxx.xxx/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://xxx.xxx.xxx.xxx/upload/
Content-Length => 380
Connection => close
Content-Type => text/html; charset=iso-8859-1
Hubo una redirección y la solicitud de ajax no respeta / sigue los redireccionamientos.
Resultó ser la barra que faltaba al final del dominio ( http://xxx.xxx.xxx.xxx/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
Usa esta herramienta para comprobar si tus encabezados son buenos y para solucionar lo que está sucediendo.
Tenga cuidado en: Encabezado agregue 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.com"
Header add Access-Control-Allow-Origin "http://bbb.com"
Header add Access-Control-Allow-Origin "http://ccc.com"
Saludos,
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