origin control allow php jquery cross-domain cors access-control

php - header('' access control allow origin*



CORS no funciona php (1)

Finalmente, yo mismo he resuelto el problema explicado en la pregunta. El código que he implementado para acceder al encabezado es incorrecto.

El código de dos líneas que se menciona a continuación, cuando se dio, no funcionó:

<?php header(''Access-Control-Allow-Origin: *''); header(''Access-Control-Allow-Methods: POST, GET, OPTIONS''); ?>

Pero manejar las solicitudes CORS correctamente es un poco más complicado. Aquí hay una función que responderá más completamente. El código actualizado es este:

<?php // Allow from any origin if (isset($_SERVER[''HTTP_ORIGIN''])) { header("Access-Control-Allow-Origin: {$_SERVER[''HTTP_ORIGIN'']}"); header(''Access-Control-Allow-Credentials: true''); header(''Access-Control-Max-Age: 86400''); // cache for 1 day } // Access-Control headers are received during OPTIONS requests if ($_SERVER[''REQUEST_METHOD''] == ''OPTIONS'') { if (isset($_SERVER[''HTTP_ACCESS_CONTROL_REQUEST_METHOD''])) header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); if (isset($_SERVER[''HTTP_ACCESS_CONTROL_REQUEST_HEADERS''])) header("Access-Control-Allow-Headers: {$_SERVER[''HTTP_ACCESS_CONTROL_REQUEST_HEADERS'']}"); exit(0); } echo "You have CORS!"; ?>

He encontrado desde otra post Funcionó ...

Estoy tratando de publicar datos de formularios desde www.siteone.com a www.sitetwo.com a través de CORS. Mi código ajax es este:

<script> $(document).ready(function(){ $("#submit").live(''click'',function() { var url = "http://www.sitetwo.com/cors.php"; var data = $(''#form'').serialize(); jQuery.ajax({ url : url, type: "POST", data : $(''#form'').serialize(), }).done(function(response){ alert(response); }).fail(function(error){ console.log(error.statusText); }); return false; }); }); </script>

y el archivo cors.php en www.sitetwo.com es el siguiente:

<?php header(''Access-Control-Allow-Origin: *''); header(''Access-Control-Allow-Methods: POST, GET, OPTIONS''); echo "hai"; ?>

Pero aún se genera un error de Access-control-Allow-Origin. El error arrojado es este:

XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.

Llegué a saber que, usando CORS simplemente permitiendo el sitio web remoto a través de los encabezados, podemos usar solicitudes entre dominios. Pero cuando lo intenté, se arrojó un error. ¿Me he perdido algo aquí? Aquí están mis encabezados de solicitud / respuesta:

Response Headers Connection Keep-Alive Content-Length 487 Content-Type text/html; charset=iso-8859-1 Date Fri, 23 Aug 2013 05:53:20 GMT Keep-Alive timeout=15, max=99 Server Apache/2.2.15 (CentOS) WWW-Authenticate Basic realm="Site two Server - Restricted Area" Request Headers Accept */* Accept-Encoding gzip, deflate Accept-Language en-US,en;q=0.5 Content-Length 43 Content-Type application/x-www-form-urlencoded; charset=UTF-8 Host www.sitetwo.com Origin http://www.siteone.com Referer http://www.siteone.com/index.html User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0