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