Tengo un archivo PHP muy simple en un servidor Apache que debe responder a una solicitud de Ajax. Estoy tratando de permitir CORS pero no funciona (la consola de Firefox muestra: Motivo: Falta el encabezado CORS 'Access-Control-Allow-Origin' ).
Intento diferentes soluciones de esta pregunta pero no funciona. No estoy usando ningún marco, solo un archivo index.php en un servidor Apache.
Este código es el más simple que encontré pero no funciona ( index.php ):
<?php header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Credentials: true"); header("Access-Control-Max-Age: 1000"); header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding"); header("Access-Control-Allow-Methods: PUT, POST, GET, OPTIONS, DELETE"); echo('CORS activated!!!'); ?>Mi archivo HTML:
$.ajax({ type: 'GET', url: 'http://localhost/index.php', }) .done(function(data) { console.log('Do I have CORS?: ' + data); }) .fail(function() { alert("Error"); });Posibilidad 1: por MDN , no puede usar el comodín ( * ) para Access-Control-Allow-Origin si también usa Access-Control-Allow-Credentials .
Para solicitudes sin credenciales, se puede especificar el valor literal "*", como comodín; el valor le dice a los navegadores que permitan solicitar código de cualquier origen para acceder al recurso. Si intenta utilizar el comodín con las credenciales, se producirá un error.
<?php header("Access-Control-Allow-Origin: *"); //Either change this to your domain(s) header("Access-Control-Allow-Credentials: true"); //Or get rid of this ?>(La razón es: esta combinación permitiría que cualquier persona en Internet se haga pasar por uno de sus usuarios cargando su dominio en un iframe y luego manipulándolo con JS, de manera completamente invisible).
Probablemente sea eso, pero lo siguiente podría ayudar con las pruebas de todos modos:
Posibilidad 2: su index.php se almacena en caché, por lo que después de realizar los cambios, su navegador aún ve la versión anterior. La característica de 'deshabilitar caché' en la consola de desarrollo puede no ser confiable para algunas cosas como iframes y recursos de URL CSS. Intente visitar index.php desde una sesión de navegación privada y verifique qué encabezados se envían en la consola de desarrollo.