Heim Backend-Entwicklung PHP-Tutorial Lösen Sie das Problem der Verarbeitung von Ajax-Anfragen durch PHP und domänenübergreifende Ajax-Probleme

Lösen Sie das Problem der Verarbeitung von Ajax-Anfragen durch PHP und domänenübergreifende Ajax-Probleme

Aug 05, 2020 pm 04:52 PM
php

Lösen Sie das Problem der Verarbeitung von Ajax-Anfragen durch PHP und domänenübergreifende Ajax-Probleme

PHP bestimmt, ob es sich um eine Ajax-Anfrage handelt. Wir wissen, dass Sie beim Senden einer Ajax-Anfrage benutzerdefinierte Header-Informationen über das XMLHttpRequest-Objekt im JQuery-Framework erstellen können Webinhalte über die Methoden $.ajax, $.get oder $.post übergeben, wird ein HTTP_X_REQUESTED_WITH-Parameter an den Server übergeben. In PHP wird auf Header-Ebene beurteilt, ob es sich um eine Ajax-Anfrage handelt, und die entsprechende Beurteilung erfolgt basierend auf . Unter normalen Umständen ist $_SERVERstandardmäßig

. Es kann auch mit

angepasst und erstellt werden. $_SERVER['HTTP_X_REQUESTED_WITH']['HTTP_X_REQUESTED_WITH']XMLHttpRequest,$_SERVER['HTTP_X_REQUESTED_WITH']Verwandte Lernempfehlungen: XMLHttpRequest.setRequestHeader(name,value)php-Programmierung

(Video)

Beispiel: Die Front-End-Seite sendet eine gewöhnliche Ajax-Anfrage an die Back-End-Test.php.

$.ajax({
  type: "GET",
  url: 'test.php',
  success: function(data) {
    console.log(data);
  }
});
Nach dem Login kopieren

Der Server test.php kann feststellen, ob es sich bei der Anfrage um eine asynchrone Ajax-Anfrage handelt, und dann entsprechend den Geschäftsanforderungen reagieren.

Der folgende Code dient zur einfachen Überprüfung, ob der Server test.php eine Ajax-Anfrage ist:

function isAjax() {
  return @$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ? true : false;
}
if (isAjax()) {
  echo 'Ajax Request Success.';
} else {
  echo 'No.';
}
Nach dem Login kopieren

Ajax initiiert eine domänenübergreifende JSONP-Anfrage

Wir können domänenübergreifende Ajax-Anfragen über die JSONP-Methode von jQuery implementieren , serverseitiges PHP Es muss auch eine entsprechende Verarbeitung durchgeführt werden, was bedeutet, dass PHP Daten in einem bestimmten Format mit der Front-End-Seite anfordern und zurückgeben muss. Beispiel: Die Front-End-Seite initiiert eine JSONP-Anfrage:

$.ajax({
  type: "get",
  data: "random="+Math.random(),
  url: "http://demo.jb51.net/phpajax/jsonp.php",
  dataType: "jsonp",
  jsonp: "callback",
  success: function(data) {
   console.log(data);
  },
  error: function() {
   console.log('Request Error.');
  }
});
Nach dem Login kopieren

Wir werden feststellen, dass die Ajax-Anfrageparameter dataType: „jsonp“ und jsonp: „callback“ enthalten, was angibt, dass ich JSONP anfordern möchte, und Es erfolgt ein Rückruf. Natürlich können wir die Rückruffunktion auch anpassen, z. B. jsonpCallback: „success_jsonpCallback“

Sie kann auch einfach geschrieben werden als:

jQuery.getJSON('http://demo.jb51.net/phpajax/jsonp.php?callback=?",{
 random: Math.random()
}, function(data){
 console.log(data);
});
Nach dem Login kopieren

Der PHP-Back-End-Servicecode kann so geschrieben werden (achten Sie auf das Format von die Ausgaberückgabe):

$data = array(
  'rand' => $_GET['random'],
  'msg' => 'Success'
);
echo $_GET['callback'].'('.json_encode($data).')';
Nach dem Login kopieren

Ajax Cross Domain Request: CORS

CORS, auch bekannt als Cross-Domain Resource Sharing, der vollständige englische Name ist Cross-Origin Resource Sharing. Angenommen, wir möchten Ajax verwenden, um Daten von der Seite von a.com zur Seite von b.com anzufordern. Aufgrund der Same-Origin-Richtlinie ist diese Art von Anfrage normalerweise nicht zulässig, und der Browser gibt auch ein „ zurück. Fehler „Quelleninkongruenz“. Daher der Begriff „domänenübergreifend“. Aber wir haben auch eine Lösung. Wir können den Header-Informationen der Seite auf b.com eine Codezeile hinzufügen:

header("Access-Control-Allow-Origin: *");
Nach dem Login kopieren
Wenn der von uns festgelegte Header die oben genannten Informationen enthält, können wir jede Anfrage auf dem Server verarbeiten und beantworten Seite, dann können Sie die Header-Informationseinstellungen im Debugging-Tool sehen. Eine der Informationen im roten Feld ist „*Access-Control-Allow-Origin: *“, was bedeutet, dass wir CORS aktiviert haben Um Anfragen nur auf einen bestimmten Domänennamen zu beschränken, kann das so aussehen:

header("Access-Control-Allow-Origin: https://www.jb51.net");
Nach dem Login kopieren

Beispiel: Domänenübergreifende Anforderungsdaten über CORS

$.ajax({
  type: "get",
  data: "random="+Math.random(),
  url: "http://demo.jb51.net/phpajax/ajax.php",
  dataType: "json",
  success: function(data) {
    console.log(data);
    $("#result_3").html(data.msg+':'+data.rand);
  },
  error: function() {
   $("#result_3").html('Request Error.');
  }
});
Nach dem Login kopieren

Wir fügen ajax.php unter einem anderen Website-Domänennamen den folgenden Code hinzu:

header("Access-Control-Allow-Origin: https://www.jb51.net");
$data = array(
  'rand' => $_GET['random'],
  'msg' => 'Success'
);
echo json_encode($data);
Nach dem Login kopieren

Dies realisiert die Initiierung von der Seite www.jb51.net. Stellen Sie eine domänenübergreifende asynchrone Anfrage an den Domänennamenpfad demo.jb51.net/phpajax/ajax.php und erhalten Sie eine Antwort.

Empfehlungen für entsprechende Videos:

PHP-Programmierung vom Einstieg bis zum Master

Das obige ist der detaillierte Inhalt vonLösen Sie das Problem der Verarbeitung von Ajax-Anfragen durch PHP und domänenübergreifende Ajax-Probleme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles