Heim >Backend-Entwicklung >PHP-Tutorial >Ajax setzt Access-Control-Allow-Origin, um domänenübergreifenden Zugriff zu erreichen
Der domänenübergreifende Ajax-Zugriff ist ein altes Problem. Die am häufigsten verwendete Methode ist die JSONP , und diese Methode unterstützt nur GET, was nicht so sicher ist wie POST.
Auch wenn Sie die jsonp-Methode von jquery verwenden und den Typ auf POST setzen, wird er automatisch in GET geändert.Hinweis:
Dadurch werden POSTs in GETs für Remote-Domain-Anfragen umgewandelt.
Access-Control-Allow-Origin festlegen.
Origin „http://www.client.com“ ist daher kein Zugriff gestattet.
*');
POST');
x-requested-with,content-type');
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="content-type" c/html;charset=utf-8"> <title> 跨域测试 </title> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> </head> <body> <div id="show"></div> <script type="text/javascript"> $.post("http://www.server.com/server.php",{name:"fdipzone",gender:"male"}) .done(function(data){ document.getElementById("show").innerHTML = data.name + ' ' + data.gender; }); </script> </body> </html>server.php Pfad: http://www.server.com/server.php
<?php $ret = array( 'name' => isset($_POST['name'])? $_POST['name'] : '', 'gender' => isset($_POST['gender'])? $_POST['gender'] : '' ); header('content-type:application:json;charset=utf8'); header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Methods:POST'); header('Access-Control-Allow-Headers:x-requested-with,content-type'); echo json_encode($ret); ?>Access-Control-Allow-Origin:* bedeutet, den domänenübergreifenden Zugriff von jedem Domänennamen aus zuzulassen
einen Domänennamen angeben müssen Um den domänenübergreifenden Zugriff zu ermöglichen, geben Sie einfach Access-Control-Allow-Origin:*Geändert in Access-Control-Allow-Origin:Allowed domain name
Zum Beispiel: header('Access- Control-Allow-Origin:
');
If erforderlich
Zugriff zulassen, Sie müssen PHP verwenden, um ihn hier zu verarbeiten
Erlauben Sie beispielsweise www.client.com und www. client2.com soll domänenübergreifenden Zugriff haben
server.php wird in
<?php $ret = array( 'name' => isset($_POST['name'])? $_POST['name'] : '', 'gender' => isset($_POST['gender'])? $_POST['gender'] : '' ); header('content-type:application:json;charset=utf8'); $origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : ''; $allow_origin = array( 'http://www.client.com', 'http://www.client2.com' ); if(in_array($origin, $allow_origin)){ header('Access-Control-Allow-Origin:'.$origin); header('Access-Control-Allow-Methods:POST'); header('Access-Control-Allow-Headers:x-requested-with,content-type'); } echo json_encode($ret); ?>
Das Obige stellt vor, wie man Access-Control-Allow-Origin für Ajax einstellt, um domänenübergreifenden Zugriff zu erreichen, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.