Comment envoyer des cookies sur plusieurs domaines

Lien de référence

Navigateur Politique de même origine et sa méthode d'évitement
Partage de ressources inter-domaines
CORS Détaillé Cookie SameSite attribut
Lorsque cross-domaine rencontre Cookie et SameSite
Cross-Site Request Forgery est mort!

Comment envoyer des cookies sur plusieurs domaines

Partie avant:

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

Ajoutez ces champs à la réponse retournée par le backend

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:8080 (必须与请求网页一致的域名)
Access-Control-Expose-Headers: Origin

Il n'est pas toujours possible d'envoyer des cookies après avoir satisfait à ces exigences. Vous devez faire attention au champ SameSite dans les cookies.

  • Lorsque SameSite est Lax, la transmission ou non des cookies dépend du type de votre méthode de demande. Pour des types spécifiques, vous pouvez afficher l'attribut SameSite des cookies .
  • Lorsque SameSite est Aucun, la transmission des cookies nécessite que vous définissiez Secure pour transmettre, qui est https.

L'article indique que Chrome80 a défini SameSite comme Lax par défaut. À partir des tests avec Firefox 69, les versions suivantes définiront également SameSite sur Lax.
La documentation officielle de Chrome indique que la version 76 a démarré. SameSite est défini sur Lax
Cookies par défaut sur SameSite = Lax Network / Connectivity

Mon exemple

Ma version actuelle est la version chromée 81.0.4044.113 (version officielle). SameSite n'est pas défini pour les cookies. Utilisez ajax pour envoyer des demandes d'obtention et de publication. Vous pouvez envoyer
des messages d'avertissement imprimés dans la console de demande de cookies interdomaines .

A cookie associated with a cross-site resource at http://127.0.0.1/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests 
if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at 
https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.  

HTML frontal

<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
  var xmlhttp;
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function()
  {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      console.log(xmlhttp.responseText);
    }
  }
  xmlhttp.open("GET","http://127.0.0.1:8082/test/post",true);
 //xmlhttp.open("POST","http://127.0.0.1:8082/test/post",true);
  xmlhttp.withCredentials = true;
  xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">cors</button>
<div id="myDiv"></div>

</body>
</html>

demande 和 réponse
demande 和 réponse

Saisissez chrome: // flags / dans la barre d'adresse de chrome ?. Définissez SameSite par défaut sur les cookies pour l'activer, c'est lorsque la propriété SameSite n'est pas définie dans le navigateur, SameSite est défini sur Lax par défaut.
site

Republier le message, ajax get request, ne peut pas envoyer de cookies, il semble donc que lorsque la propriété SameSite n'est pas définie dans ma version du navigateur, SameSite n'est pas défini sur Lax par défaut.

Cas particulier

Dans la version de chrome 66 sur l'ordinateur de l'entreprise, il est constaté que SameSite est défini sur aucun, sécurisé est également défini et des demandes https sont également envoyées. Qu'il s'agisse d'un domaine croisé ou non, il ne peut pas être envoyé. Par conséquent, un utilisateur ne peut pas se connecter tout le temps et chaque demande définit un nouveau cookie.

Résumé

Il est trop difficile de transporter des cookies entre les domaines, alors téléchargez le jeton dans l'en-tête.

Je suppose que tu aimes

Origine www.cnblogs.com/alway-july/p/12757292.html
conseillé
Classement