Estoy tratando de realizar una solicitud HTTP de dominio cruzado al servicio WCF (que soy de mi propiedad). He leído varias técnicas para trabajar con las limitaciones de secuencias de comandos de dominio cruzado. Debido a que mi servicio debe adaptarse tanto a las solicitudes GET como a las POST, no puedo implementar alguna etiqueta de script dinámica cuyo src sea la URL de una solicitud GET. Como soy libre de hacer cambios en el servidor, he comenzado a intentar implementar una solución alternativa que implica configurar las respuestas del servidor para incluir el encabezado "Access-Control-Allow-Origin" y las solicitudes de "verificación previa" con una solicitud de OPCIONES. Tuve la idea de esta publicación: Hacer que CORS funcione
En el lado del servidor, mi método web es agregar 'Access-Control-Allow-Origin: *' a la respuesta HTTP. Puedo ver que las respuestas incluyen este encabezado ahora. Mi pregunta es: ¿Cómo realizo una verificación previa de una solicitud (OPCIONES)? Estoy usando jQuery.getJSON para realizar la solicitud GET, pero el navegador cancela la solicitud de inmediato con el infame:
Origin http: // localhost no está permitido por Access-Control-Allow-Origin
¿Alguien está familiarizado con esta técnica CORS? ¿Qué cambios deben realizarse en el cliente para realizar una verificación previa de mi solicitud?
¡Gracias!
fuente
Access-Control-Allow-Origin: *
//cors and preflight filtering app.all('*', function(req, res, next){.. //preflight needs to return exact request-header res.set('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); if ('OPTIONS' == req.method) return res.send(204);next(); });
Aunque este hilo se remonta a 2014, el problema aún puede ser actual para muchos de nosotros. Así es como lo manejé en un contexto jQuery 1.12 / PHP 5.6:
Ejemplo de código PHP:
En particular, no agregue una
exit;
verificación previa ya que no es necesaria.fuente