L'accès inter-domaines Ajax peut être obtenu en utilisant la méthode jsonp ou en définissant Access-Control-Allow-Origin. Concernant la configuration d'Access-Control-Allow-Origin pour obtenir un accès inter-domaine, vous pouvez vous référer à l'article que j'ai écrit auparavant. "Paramètre ajax Access-Control- Allow-Origin pour obtenir un accès inter-domaines》
Créez d'abord deux domaines de test nomme
a.fdipzone .com comme nom de domaine client
b.fdipzone.com comme nom de domaine serveur
Code de test
setcookie.php est utilisé pour définir les cookies du serveur
<?phpsetcookie('data', time(), time()+3600);?>
server.php est utilisé pour être demandé par le client
<?php$name = isset($_POST['name'])? $_POST['name'] : '';$ret = array( 'success' => true, 'name' => $name, 'cookie' => isset($_COOKIE['data'])? $_COOKIE['data'] : '');// 指定允许其他域名访问header('Access-Control-Allow-Origin:http://a.fdipzone.com');// 响应类型header('Access-Control-Allow-Methods:POST'); // 响应头设置header('Access-Control-Allow-Headers:x-requested-with,content-type'); header('content-type:application/json');echo json_encode($ret);?>
test.html Page de demande du client
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <title> ajax 跨域访问cookie丢失的解决方法 </title> </head> <body> <script type="text/javascript"> $(function(){ $.ajax({ url: 'http://b.fdipzone.com/server.php', // 跨域 dataType: 'json', type: 'post', data: {'name':'fdipzone'}, success:function(ret){ if(ret['success']==true){ alert('cookie:' + ret['cookie']); } } }); }) </script> </body></html>
Première exécution de http : //b.fdipzone.com/setcookie.php, crée des cookies côté serveur.
Ensuite, exécutez http://a.fdipzone.com/test.html
Sortie
{"success":true,"name":"fdipzone","cookie":""}
Échec de l'obtention du cookie.
Client
Définissez l'attribut withCredentials sur < lors de la demande 🎜> true permet de spécifier que les informations d'identification doivent être envoyées pour une certaine demande. Si le serveur reçoit une demande avec des informations d'identification, il répondra avec les en-têtes HTTP suivants.
Serveur Définir l'en-tête
header("Access-Control-Allow-Credentials:true");
test.html Modifiez comme suit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <title> ajax 跨域访问cookie丢失的解决方法 </title> </head> <body> <script type="text/javascript"> $(function(){ $.ajax({ url: 'http://b.fdipzone.com/server.php', // 跨域 xhrFields:{withCredentials: true}, // 发送凭据 dataType: 'json', type: 'post', data: {'name':'fdipzone'}, success:function(ret){ if(ret['success']==true){ alert('cookie:' + ret['cookie']); } } }); }) </script> </body></html>
server.php Modifiez comme suit
<?php$name = isset($_POST['name'])? $_POST['name'] : '';$ret = array( 'success' => true, 'name' => $name, 'cookie' => isset($_COOKIE['data'])? $_COOKIE['data'] : '');// 指定允许其他域名访问header('Access-Control-Allow-Origin:http://a.fdipzone.com');// 响应类型header('Access-Control-Allow-Methods:POST'); // 响应头设置header('Access-Control-Allow-Headers:x-requested-with,content-type');// 是否允许请求带有验证信息header('Access-Control-Allow-Credentials:true'); header('content-type:application/json');echo json_encode($ret);?>
{"success":true,"name":"fdipzone","cookie":"1484558863"}
XMLHttpRequest cannot load http://b.fdipzone.com/server.php. Credentials flag is 'true', but the 'Access-Control-Allow-Credentials' header is ''. It must be 'true' to allow credentials. Origin 'http://a.fdipzone.com' is therefore not allowed access.
XMLHttpRequest cannot load http://b.fdipzone.com/server.php. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://a.fdipzone.com' is therefore not allowed access. The credentials mode of an XMLHttpRequest is controlled by the withCredentials attribute.
Explication sur la méthode de calcul de key_len dans mysql expliquer
Comment utiliser curl pour simuler ip et accédez à la source
Convertissez les données NULL via la méthode MySQL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!