Maison >interface Web >js tutoriel >Comment résoudre le problème de l'accès inter-domaines Ajax, la session ne peut pas être enregistrée, etc.
Ajouter une configuration dans la requête ajax
$.ajax({ url:url, //加上 xhrFields及crossDomain xhrFields: { //允许带上凭据 withCredentials: true }, crossDomain: true, //以上 success:function(result){ alert("test"); }, error:function(){ } });
withCredentials :
Par défaut, les requêtes cross-origin ne fournissent pas d'identifiants (cookies, authentification HTTP, certification SSL client, etc.). Vous pouvez spécifier qu'une certaine requête doit envoyer des informations d'identification en définissant la propriété withCredentials sur true. Si le serveur reçoit une demande avec des informations d'identification, il répondra avec les en-têtes HTTP suivants."Access-Control-Allow-Credentials : true"
Si une demande avec des informations d'identification est envoyée, mais que la réponse du serveur n'inclut pas l'en-tête ci-dessus, alors le Le navigateur ne transmettra pas la réponse à JavaScript (le réponseText sera donc une chaîne vide, la valeur d'état sera 0 et le gestionnaire d'événements onerror() sera appelé). De plus, le serveur peut également envoyer cet en-tête HTTP dans la réponse Preflight pour indiquer que l'origine est autorisée à envoyer des requêtes avec des informations d'identification.
Les navigateurs qui prennent en charge l'attribut withCredentials incluent Firefox 3.5+, Safari 4+ et Chrome. IE10 et les versions antérieures ne sont pas pris en charge.
En même temps
Après avoir ajouté l'en-tête de réponse de base d'autorisation inter-domaines
Vous devez ajouter Access-Allow-Credentials:true
De plus, en raison de la politique de sécurité de Google
Lorsque withCredentials est vrai
Access-Allow-Origin dans ResponseHeader ne peut pas utiliser le caractère générique '*'
Sinon, il affichera une invite
Un caractère générique '*' ne peut pas être utilisé
dans l'en-tête 'Access-Control-Allow-Origin' lorsque l'indicateur d'informations d'identification est vrai. L'origine 'http://url' n'est donc pas autorisée à accéder.
Autre navigation Le serveur est à tester
Ajouter une configuration dans la requête ajax
$.ajax({ url:url, //加上 xhrFields及crossDomain xhrFields: { //允许带上凭据 withCredentials: true }, crossDomain: true, //以上 success:function(result){ alert("test"); }, error:function(){ } });
withCredentials :
Par défaut, les requêtes cross-origin ne fournissent pas d'identifiants (cookies, authentification HTTP, certification SSL client, etc.). Vous pouvez spécifier qu'une certaine requête doit envoyer des informations d'identification en définissant la propriété withCredentials sur true. Si le serveur reçoit une demande avec des informations d'identification, il répondra avec les en-têtes HTTP suivants."Access-Control-Allow-Credentials : true"
Si une demande avec des informations d'identification est envoyée, mais que la réponse du serveur n'inclut pas l'en-tête ci-dessus, alors le Le navigateur ne transmettra pas la réponse à JavaScript (le réponseText sera donc une chaîne vide, la valeur d'état sera 0 et le gestionnaire d'événements onerror() sera appelé). De plus, le serveur peut également envoyer cet en-tête HTTP dans la réponse Preflight pour indiquer que l'origine est autorisée à envoyer des requêtes avec des informations d'identification.
Les navigateurs qui prennent en charge l'attribut withCredentials incluent Firefox 3.5+, Safari 4+ et Chrome. IE10 et les versions antérieures ne sont pas pris en charge.
En même temps
Après avoir ajouté l'en-tête de réponse de base d'autorisation inter-domaines
Vous devez ajouter Access-Allow-Credentials:true
De plus, en raison de la politique de sécurité de Google
Lorsque withCredentials est vrai
Access-Allow-Origin dans ResponseHeader ne peut pas utiliser le caractère générique '*'
Sinon, il affichera une invite
Un caractère générique '*' ne peut pas être utilisé dans l'en-tête 'Access -Control-Allow-Origin' lorsque l'indicateur d'informations d'identification est vrai. L'origine 'http://url' n'est donc pas autorisée à accéder.
Autres navigateurs à tester
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!