Heim >Web-Frontend >js-Tutorial >So lösen Sie das Problem des domänenübergreifenden Ajax-Zugriffs, der Sitzung kann nicht gespeichert werden usw.
Konfiguration in Ajax-Anfrage hinzufügen
$.ajax({ url:url, //加上 xhrFields及crossDomain xhrFields: { //允许带上凭据 withCredentials: true }, crossDomain: true, //以上 success:function(result){ alert("test"); }, error:function(){ } });
withCredentials:
Standardmäßig stellen Cross-Origin-Anfragen keine Anmeldeinformationen bereit (Cookies, HTTP-Authentifizierung, Client-SSL-Zertifizierung usw.). Sie können festlegen, dass eine bestimmte Anfrage Anmeldeinformationen senden soll, indem Sie die Eigenschaft „withCredentials“ auf „true“ setzen. Wenn der Server eine Anfrage mit Anmeldeinformationen erhält, antwortet er mit den folgenden HTTP-Headern."Access-Control-Allow-Credentials: true"
Wenn eine Anfrage mit Anmeldeinformationen gesendet wird, die Antwort des Servers jedoch nicht den oben genannten Header enthält, dann wird die Der Browser übergibt die Antwort nicht an JavaScript (daher ist der Antworttext ein leerer String, der Statuswert ist 0 und der Ereignishandler onerror() wird aufgerufen). Darüber hinaus kann der Server diesen HTTP-Header auch in der Preflight-Antwort senden, um anzuzeigen, dass der Ursprung Anfragen mit Anmeldeinformationen senden darf.
Zu den Browsern, die das withCredentials-Attribut unterstützen, gehören Firefox 3.5+, Safari 4+ und Chrome. IE10 und frühere Versionen werden nicht unterstützt.
Gleichzeitig
Nach dem Hinzufügen des grundlegenden domänenübergreifenden Antwortheaders zulassen
Sie müssen Access-Allow-Credentials:true hinzufügen
Darüber hinaus aufgrund der Sicherheitsrichtlinie von Google
Wenn withCredentials wahr ist
Access-Allow-Origin im ResponseHeader kann den Platzhalter „*“ nicht verwenden
Andernfalls wird eine Meldung ausgegeben
Ein Platzhalter „*“ kann nicht verwendet werden Seien Sie uns
im Header „Access-Control-Allow-Origin“ angegeben, wenn das Anmeldeinformations-Flag wahr ist. Origin „http://url“ ist daher kein Zugriff gestattet.
Anderes Surfen Der Server soll getestet werden
Konfiguration in Ajax-Anfrage hinzufügen
$.ajax({ url:url, //加上 xhrFields及crossDomain xhrFields: { //允许带上凭据 withCredentials: true }, crossDomain: true, //以上 success:function(result){ alert("test"); }, error:function(){ } });
withCredentials:
Standardmäßig stellen Cross-Origin-Anfragen keine Anmeldeinformationen bereit (Cookies, HTTP-Authentifizierung, Client-SSL-Zertifizierung usw.). Sie können festlegen, dass eine bestimmte Anfrage Anmeldeinformationen senden soll, indem Sie die Eigenschaft „withCredentials“ auf „true“ setzen. Wenn der Server eine Anfrage mit Anmeldeinformationen erhält, antwortet er mit den folgenden HTTP-Headern."Access-Control-Allow-Credentials: true"
Wenn eine Anfrage mit Anmeldeinformationen gesendet wird, die Antwort des Servers jedoch nicht den oben genannten Header enthält, dann wird die Der Browser übergibt die Antwort nicht an JavaScript (daher ist der Antworttext ein leerer String, der Statuswert ist 0 und der Ereignishandler onerror() wird aufgerufen). Darüber hinaus kann der Server diesen HTTP-Header auch in der Preflight-Antwort senden, um anzuzeigen, dass der Ursprung Anfragen mit Anmeldeinformationen senden darf.
Zu den Browsern, die das withCredentials-Attribut unterstützen, gehören Firefox 3.5+, Safari 4+ und Chrome. IE10 und frühere Versionen werden nicht unterstützt.
Gleichzeitig
Nach dem Hinzufügen des grundlegenden domänenübergreifenden Antwortheaders zulassen
Sie müssen Access-Allow-Credentials:true hinzufügen
Darüber hinaus aufgrund der Sicherheitsrichtlinie von Google
Wenn withCredentials wahr ist
Access-Allow-Origin im ResponseHeader kann den Platzhalter „*“ nicht verwenden
Andernfalls wird eine Meldung ausgegeben
Ein Platzhalter „*“ kann nicht verwendet werden im Header „Access -Control-Allow-Origin“ verwendet werden, wenn das Credentials-Flag „true“ ist. Origin „http://url“ ist daher kein Zugriff gestattet.
Andere zu testende Browser
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem des domänenübergreifenden Ajax-Zugriffs, der Sitzung kann nicht gespeichert werden usw.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!