Tema: Uso de CORS
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2016, 19:40
NeaFan
 
Fecha de Ingreso: diciembre-2014
Ubicación: montería
Mensajes: 33
Antigüedad: 9 años, 8 meses
Puntos: 0
Busqueda Uso de CORS

Buenas, mas que nada debo informar que soy un completo extraño en este nuevo tema y ademas quiero expresar que es mi intensión mantenerme en lo posible alejado de las implementaciones JQUERY para esta solución.

En Internet he encontrado buena documentación, que es posible que no hubiese podido interpretar con toda claridad, incluso he leido secciones de guias tan relevantes como mozilla: https://developer.mozilla.org/en-US/...s_control_CORS y la w3: https://www.w3.org/TR/2008/WD-access-control-20080912/ que ciertamente son muy clasificadores...

Al grano...

Mostrare algo muy sencillo:

tengo un fichero php de donde voy a consumir los datos a través de AJAX, teniendo en cuenta información obtenida en internet debo garantizar la instrucción Access-Control-Allow-Origin: * ya sea en la configuración de apache (Vulnerabilidad global) o en la cabecera de los archivos a los que voy a consumir (Para mi seria lo ideal). «Aclararé que aunque mostrare el segundo método ya le he intentado usado el primero» concluyendo un archivo así:

fichero: dominio2/servidor.php
Código PHP:
Ver original
  1. header("Access-Control-Allow-Origin: *");
  2. header("Access-Control-Allow-Methods: POST");
  3. header("Content-type", "application/json");
  4.  
  5. echo json_encode([1,2,3]);

fichero: dominio1/consultor.html «Extraccion de codigo JS »
Código Javascript:
Ver original
  1. var invocation = new XMLHttpRequest();
  2. var url = 'dominio2/servidor.php';
  3. /** Funcion que he copiado de la MSDN **/
  4. function callOtherDomain() {
  5.     if (invocation)
  6.     {
  7.         invocation.open('POST', url);
  8.         invocation.setRequestHeader("Access-Control-Allow-Origin", "*");
  9.         invocation.setRequestHeader("Access-Control-Allow-Methods", "POST");
  10.         invocation.setRequestHeader("Content-type", "application/json");
  11.        /** handler es una funcion **/
  12.         invocation.onreadystatechange = handler;
  13.         invocation.send();
  14.     }
  15. }
  16. callOtherDomain();

El error que presento en consola es el siguiente:
Código Error:
Ver original
  1. XMLHttpRequest cannot load http://dominio2/servidor.php. Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.


He intentado un sin numero de cambios, pero no he logrado realizar el consumo de datos que deseo por parte de consultor.html, ya he tratado realizando diferentes pruebas en local implementando diferentes dominios gracias a configuraciones virtualhost de apache como a continuación:

http://localhost/proyecto1 => mi-servidor.local
http://localhost/proyecto2 => mi-consultor.local

Ambos proyectos son accesibles desde sus Host Virtuales, pero requiero que mi-consultor.local pueda realizar peticiones a mi-servidor.local

¿Que estoy haciendo mal?