No puedo entender por qué la .htaccess
configuración de mi encabezado no funciona.
El .htaccess
contenido de mi 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 Header
los y los agrego 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?
.htaccess
mod-rewrite
rewrite
cors
usuario1401592
fuente
fuente
a2enmod headers
Header set
en este caso. Si se cambia el código y SÍ establece el encabezado, hacer que Apache loheader add
haga enviará encabezados dobles **. Esto romperá clientes como Restangular, por ejemplo.Header add Access-Control-Allow-Credentials "true"
Solo para que conste, me estaba encontrando exactamente con el mismo problema y ninguna de las respuestas funcionó.
Usé una herramienta de verificació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:Hubo una redirección y la solicitud AJAX no respeta / sigue las redirecciones.
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. También se agregó una barra en el script y ahora estaba funcionando.
Utilice esta herramienta para probar si sus encabezados son buenos y para solucionar lo que está sucediendo.
fuente
Tengo un alojamiento compartido en GoDaddy. También necesitaba una respuesta a esta pregunta, y después de buscar, descubrí que es posible.
Escribí un archivo .htaccess, lo puse en la misma carpeta que mi página de acción. Aquí está el contenido del archivo .htaccess:
Aquí está mi llamada ajax:
Consulte este artículo como referencia:
El conjunto de encabezados Access-Control-Allow-Origin en .htaccess no funciona
fuente
Tenga cuidado con:
Esto no es juicioso en absoluto para permitir el acceso a todos. Es preferible permitir una lista de hosts de confianza conocidos únicamente ...
Saludos,
fuente
Activé los encabezados a2enmod del módulo Apache y el problema se resolvió.
fuente
sudo a2enmod headers
y un reinicio lo hizo funcionar!Pruebe esto en el .htaccess de la carpeta raíz externa
Tenga cuidado con: Header add Access-Control-Allow-Origin "*" No es juicioso conceder acceso a todo el mundo. Creo que deberías usar:
fuente
Hice +1 en la respuesta de Miro para el enlace al sitio del verificador de encabezados 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 del javascript en mi página web. Descubrí que agregar lo siguiente a mi archivo .htaccess solucionó el problema al ver mi página web en IE 11 (versión 11.447.14393.0):
También agregué lo siguiente a /etc/httpd.conf (archivo de configuración de Apache):
El sitio del verificador de encabezados 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 obtienen el archivo de todos modos, incluso sin el encabezado Access-Control-Allow-Origin. (Nota: es posible que estén verificando direcciones IP, ya que los dos dominios que estaba usando 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:
Creo que esto tiene que ser una especie de "primera". IE funciona correctamente; Chrome, Firefox, Opera y Edge tienen errores; y Chrome es el peor . ¿No es exactamente lo contrario del caso habitual?
fuente
Después de pasar medio día sin nada funcionando. Usando un servicio de verificación de encabezado, aunque todo estaba funcionando. El firewall en el trabajo los estaba quitando
fuente
prueba esto:
Es preferible permitir una lista de hosts de confianza conocidos.
fuente
Si alguien más está intentando esto, la respuesta más votada debería funcionar. Sin embargo, si tiene problemas, es posible que el navegador haya almacenado en caché la SOLICITUD. Para confirmar, agregue una cadena de consulta.
fuente