Heim Backend-Entwicklung PHP-Tutorial Ajax setzt Access-Control-Allow-Origin, um domänenübergreifenden Zugriff zu erreichen

Ajax setzt Access-Control-Allow-Origin, um domänenübergreifenden Zugriff zu erreichen

Aug 08, 2016 am 09:23 AM
access control origin

Der domänenübergreifende Ajax-Zugriff ist ein altes Problem. Die am häufigsten verwendete Methode ist die JSONP , und diese Methode unterstützt nur GET, was nicht so sicher ist wie POST.

Auch wenn Sie die jsonp-Methode von jquery verwenden und den Typ auf POST setzen, wird er automatisch in GET geändert.


Offizielle Problembeschreibung:


„script“: Wertet die Antwort als JavaScript aus und gibt sie als Klartext zurück. Deaktiviert das Caching durch Anhängen des Abfragezeichenfolgenparameters „_=[TIMESTAMP]“ an die URL, es sei denn, die Cache-Option ist auf true gesetzt.

Hinweis: Dadurch werden POSTs in GETs für Remote-Domain-Anfragen umgewandelt.

Wenn Sie POST domänenübergreifend verwenden, können Sie damit einen versteckten Iframe erstellen und ihn mit hochladen Ajax Das Prinzip des Bildes ist dasselbe, aber es wird schwieriger sein.


Daher ist es relativ einfach, einen domänenübergreifenden Zugriff zu erreichen, indem Sie

Access-Control-Allow-Origin festlegen.

Zum Beispiel: Der Domänenname des Clients ist www.client.com und der angeforderte Domänenname ist www.server.com


Wenn Sie Ajax für den direkten Zugriff verwenden, wird der folgende Fehler angezeigt


XMLHttpRequest kann http://www.server.com/server.php nicht laden . Auf der angeforderten Ressource ist kein „Access-Control-Allow-Origin“-Header vorhanden.

Origin „http://www.client.com“ ist daher kein Zugriff gestattet.

Fügen Sie


// hinzu, um anderen Domainnamen den Zugriff auf den


Header zu ermöglichen( 'Access -Control-Allow-Origin:

*');

// Antworttyp


header('Access-Control-Allow-Methods:

POST');

// Einstellung des Antwortheaders


header('Access-Control-Allow-Headers:

x-requested-with,content-type');

Sie können den domänenübergreifenden Ajax-POST-Zugriff implementieren.


Der Code lautet wie folgt:


client.html Pfad: http://www.client.com /client.html


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <meta http-equiv="content-type" c/html;charset=utf-8">
  <title> 跨域测试 </title>
  <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
 </head>

 <body>
    <div id="show"></div>
    <script type="text/javascript">
    $.post("http://www.server.com/server.php",{name:"fdipzone",gender:"male"})
      .done(function(data){
        document.getElementById("show").innerHTML = data.name + ' ' + data.gender;
      });
    </script>
 </body>
</html>
Nach dem Login kopieren
server.php Pfad: http://www.server.com/server.php

<?php
$ret = array(
    &#39;name&#39; => isset($_POST['name'])? $_POST['name'] : '',
    'gender' => isset($_POST['gender'])? $_POST['gender'] : ''
);

header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');

echo json_encode($ret);
?>
Nach dem Login kopieren
Access-Control-Allow-Origin:* bedeutet, den domänenübergreifenden Zugriff von jedem Domänennamen aus zuzulassen

Wenn Sie

einen Domänennamen angeben müssen Um den domänenübergreifenden Zugriff zu ermöglichen, geben Sie einfach Access-Control-Allow-Origin:*Geändert in Access-Control-Allow-Origin:Allowed domain name
Zum Beispiel: header('Access- Control-Allow-Origin:

http://www.client.com

');
If erforderlich

Mehrere Domänennamen festlegen

Zugriff zulassen, Sie müssen PHP verwenden, um ihn hier zu verarbeiten
Erlauben Sie beispielsweise www.client.com und www. client2.com soll domänenübergreifenden Zugriff haben


server.php wird in


Quellcode-Download-Adresse: Klicken Sie hier, um
<?php
$ret = array(
    &#39;name&#39; => isset($_POST['name'])? $_POST['name'] : '',
    'gender' => isset($_POST['gender'])? $_POST['gender'] : ''
);

header('content-type:application:json;charset=utf8');

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';

$allow_origin = array(
    'http://www.client.com',
    'http://www.client2.com'
);

if(in_array($origin, $allow_origin)){
    header('Access-Control-Allow-Origin:'.$origin);
    header('Access-Control-Allow-Methods:POST');
    header('Access-Control-Allow-Headers:x-requested-with,content-type');
}

echo json_encode($ret);
?>
Nach dem Login kopieren

anzuzeigen

Das Obige stellt vor, wie man Access-Control-Allow-Origin für Ajax einstellt, um domänenübergreifenden Zugriff zu erreichen, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

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ß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)

Wie man Deepseek PDF umwandelt Wie man Deepseek PDF umwandelt Feb 19, 2025 pm 05:24 PM

Deepseek kann Dateien nicht direkt in PDF konvertieren. Abhängig vom Dateityp können Sie verschiedene Methoden verwenden: gemeinsame Dokumente (Word, Excel, PowerPoint): Verwenden Sie Microsoft Office, LibreOffice und andere Software, um als PDF zu exportieren. Bild: Speichern Sie als PDF mithilfe von Image Viewer oder Bildverarbeitungssoftware. Webseiten: Verwenden Sie die Funktion des Browsers "Into PDF" oder die dedizierte Webseite zum PDF -Tool. Ungewöhnliche Formate: Finden Sie den richtigen Konverter und konvertieren Sie ihn in PDF. Es ist wichtig, die richtigen Tools auszuwählen und einen Plan zu entwickeln, der auf der tatsächlichen Situation basiert.

So lesen Sie eine DBF-Datei in Oracle So lesen Sie eine DBF-Datei in Oracle May 10, 2024 am 01:27 AM

Oracle kann DBF-Dateien durch die folgenden Schritte lesen: Erstellen Sie eine externe Tabelle und verweisen Sie auf die DBF-Datei.

Interpretation von Botanix: dezentrales BTC L2 für Netzwerk-Asset-Management (mit interaktivem Tutorial) Interpretation von Botanix: dezentrales BTC L2 für Netzwerk-Asset-Management (mit interaktivem Tutorial) May 08, 2024 pm 06:40 PM

Gestern gab BotanixLabs bekannt, dass es eine Finanzierung in Höhe von insgesamt 11,5 Millionen US-Dollar unter Beteiligung von Polychain Capital, Placeholder Capital und anderen abgeschlossen hat. Die Finanzierung wird für den Aufbau des dezentralen EVM-Äquivalents von BTCL2Botanix verwendet. Spiderchain kombiniert die Benutzerfreundlichkeit von EVM mit der Sicherheit von Bitcoin. Seit der Inbetriebnahme des Testnetzes im November 2023 gab es mehr als 200.000 aktive Adressen. Odaily wird in diesem Artikel den charakteristischen Mechanismus und Testnetz-Interaktionsprozess von Botanix analysieren. Botanix Laut offizieller Definition ist Botanix eine dezentrale Turing-vollständige L2EVM, die auf Bitcoin basiert und aus zwei Kernkomponenten besteht: der Ethereum Virtual Machine

Wie löste ich das Problem der Schnittstelle zwischen Drittanbietern in der Node.js-Umgebung 403? Wie löste ich das Problem der Schnittstelle zwischen Drittanbietern in der Node.js-Umgebung 403? Mar 31, 2025 pm 11:27 PM

Lösen Sie das Problem der Schnittstelle zwischen Drittanbietern, die 403 in der Node.js-Umgebung zurückgeben. Wenn wir Node.js verwenden, um Schnittstellen von Drittanbietern aufzurufen, begegnen wir manchmal einen Fehler von 403 von der Schnittstelle, die 403 zurückgibt ...

Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Apr 01, 2025 am 07:45 AM

Die Auswirkungen des Austauschs von Redis -Verbindungen im Laravel -Framework und der Auswahl von Methoden bei Verwendung von Laravel -Framework und Redis können Entwickler auf ein Problem stoßen: Durch Konfiguration ...

Was sind die Vorteile von Multithreading in C#? Was sind die Vorteile von Multithreading in C#? Apr 03, 2025 pm 02:51 PM

Der Vorteil des Multithreading besteht darin, dass es die Leistung und die Ressourcenauslastung verbessern kann, insbesondere für die Verarbeitung großer Datenmengen oder die Durchführung zeitaufwändiger Vorgänge. Es ermöglicht es, mehrere Aufgaben gleichzeitig auszuführen, wodurch die Effizienz verbessert wird. Zu viele Threads können jedoch zu einer Leistungsverschlechterung führen. Sie müssen daher sorgfältig die Anzahl der Threads basierend auf der Anzahl der CPU -Kerne und Aufgabenmerkmale auswählen. Darüber hinaus beinhaltet die Multi-Thread-Programmierung Herausforderungen wie Deadlock- und Rassenbedingungen, die unter Verwendung von Synchronisationsmechanismen gelöst werden müssen, und erfordern solide Kenntnisse über die gleichzeitige Programmierung, das Abwägen der Vor- und Nachteile und die Verwendung mit Vorsicht.

Wie vermeiden Sie Schnittstellen von Drittanbietern, die 403 Fehler in der Knotenumgebung zurückgeben? Wie vermeiden Sie Schnittstellen von Drittanbietern, die 403 Fehler in der Knotenumgebung zurückgeben? Apr 01, 2025 pm 02:03 PM

So vermeiden Sie die Schnittstelle von Drittanbietern, die 403 Fehler in der Knotenumgebung zurückgibt. Wenn Sie die Website von Drittanbietern mithilfe von node.js aufrufen, stoßen Sie manchmal auf das Problem der Rückgabe von 403-Fehler. � ...

So aktivieren Sie den Fernzugriff in Windows 11_Windows 11 ermöglicht die Freigabe des Fernzugriffs-Tutorials So aktivieren Sie den Fernzugriff in Windows 11_Windows 11 ermöglicht die Freigabe des Fernzugriffs-Tutorials May 08, 2024 pm 08:31 PM

1. Suchen Sie im Startmenü nach der Seite „Systemsteuerung“. 2. Ändern Sie dann die Ansicht in der Systemsteuerung in „Kategorie“ und klicken Sie auf „System- und Sicherheitsoptionen“. 3. Suchen Sie unter „System“ nach der Schaltfläche „Remotezugriff zulassen“ und klicken Sie darauf. 4. Im Popup-Fenster Klicken Sie im Fenster auf die Spalte „Remote-Systemeigenschaften“, aktivieren Sie die Schaltfläche „Remoteverbindung zu diesem Computer zulassen“ und klicken Sie zum Speichern auf „OK“.

See all articles