Heim  >  Artikel  >  Backend-Entwicklung  >  Eine Einführung in die Methode zur Steuerung domänenübergreifender Domänennamen und zur Ermöglichung domänenübergreifender Bild-Uploads im PHP-Backend

Eine Einführung in die Methode zur Steuerung domänenübergreifender Domänennamen und zur Ermöglichung domänenübergreifender Bild-Uploads im PHP-Backend

不言
不言nach vorne
2018-11-12 13:52:513941Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Methode zur Steuerung domänenübergreifender Domänennamen und dem Ermöglichen des domänenübergreifenden Hochladens von Bildern über das PHP-Backend. Ich hoffe, dass dies der Fall ist hilfreich sein.

Oft müssen domänenübergreifende Probleme bewältigt werden, und das Front-End muss direkter erfolgen

Wählen Sie entweder die asynchrone Ajax-Übermittlung, XML oder JSONP oder die Formularübermittlung

jsonp kann im Grunde alles verarbeiten. Es gibt einige domänenübergreifende Probleme, aber das Problem ist auch relativ offensichtlich. Es kann nur über die get-Methode

übermittelt werden, und jsonp sendet die Anfrage, indem es Parameter in die URL einfügt 🎜>

Allerdings haben alle Browser URL-Längenbeschränkungen, verschiedene Browser haben unterschiedliche Längenbeschränkungen

Wenn Sie einen großen Absatz mit Inhalten einreichen müssen, z. B. einen Artikel, wenn Sie JSONP und die Länge verwenden Wenn die Länge überschritten wird, können Sie nur teilen und senden

Es ist sehr problematisch und am Ende ist es nicht korrekt. Die Sicherheit hat einige Auswirkungen

Und Axiox unterstützt JSONP derzeit nicht. Obwohl es welche gibt Lösungsmöglichkeiten

Insbesondere beim Hochladen von Bildressourcen kann es mit Methoden wie jsonp nicht gut implementiert werden

Szenarien, die das Hochladen von domänenübergreifenden Bildern erfordern

Natürlich ist es am besten, nicht domänenübergreifend zu arbeiten, aber bei den meisten Projekten sind derzeit Front-End und Back-End getrennt.

Statische Ressourcen und Schnittstellen sind unterschiedliche Domänennamen bzw. Domänennamen der zweiten Ebene beinhaltet domänenübergreifendes Hochladen

Wenn es sich um einen Ressourcen-Upload handelt, sind beim domänenübergreifenden Ausführen das Backend Access-Control-Allow-Origin und die aktuelle Anforderung erforderlich. Das Gleiche wie bei Origin kann nicht auf * gesetzt werden

php-Lösung

Wenn es sich um eine herkömmliche Datenanfrage handelt, dann setzt das Backend Access-Control-Allow-Origin direkt auf * Gut

 header('Access-Control-Allow-Origin:*');
Aber der Ursprung des Hochladens von Ressourcen wie Bildern muss mit dem Wert von Access-Control-Allow-Origin identisch sein

Wenn Access-Control-Allow-Origin auf den gleichen Wert wie der aktuelle Ursprung eingestellt ist, dann dort ist nur ein Domänenname, der hochgeladen werden kann.

Wenn andere Domänennamen diese Schnittstelle aufrufen müssen, werden sie gesperrt.

Daher ist es am besten, die Liste der Domänennamen einzuschränken kann diese Schnittstelle aufrufen. Verbesserte Sicherheit

Die Methode besteht darin, zuerst den Ursprung der aktuellen Anfrage zu ermitteln. Wenn sie in der Liste der Domänennamen enthalten ist, auf die zugegriffen werden darf

, legen Sie fest Wert von Access-Control-Allow-Origin auf die aktuelle Anfrage Origin

$originList = [
    'http://127.0.0.1',
    'http://www.php.cn',
    'http://www.php.cn',
];
if(in_array($_SERVER['HTTP_ORIGIN'], $originList)){
    header('Access-Control-Allow-Origin:'.$origin);
    header("Access-Control-Allow-Credentials: true");
    header('Access-Control-Allow-Headers:x-requested-with,content-type');
    header("Access-Control-Allow-Methods: POST,GET,OPTIONS");
}
Auf diese Weise können Sie Domänennamen steuern, die domänenübergreifend sein können, und Bildressourcen können genauso problemlos hochgeladen werden wie in derselben Domäne

Die Post-Methode ist auch für die domänenübergreifende Einreichung anwendbar


Das obige ist der detaillierte Inhalt vonEine Einführung in die Methode zur Steuerung domänenübergreifender Domänennamen und zur Ermöglichung domänenübergreifender Bild-Uploads im PHP-Backend. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen