Die beste domänenübergreifende Strategie und Implementierung in der PHP-API-Entwicklung
Mit dem Aufkommen der RESTful API wurde PHP als Back-End-Entwicklungssprache auch in vielen Webanwendungen weit verbreitet. Bei der Entwicklung von RESTful-APIs müssen häufig Probleme beim domänenübergreifenden Zugriff berücksichtigt werden. In diesem Artikel werden die besten domänenübergreifenden Strategien bei der PHP-API-Entwicklung und deren Implementierung erläutert.
Cross-Origin Resource Sharing bezieht sich darauf, wenn ein Dokument oder Skript in einer Domäne versucht, Ressourcen in einer anderen Domäne anzufordern. Bei einer domänenübergreifenden Anfrage sendet der Browser eine „OPTIONS“-Anfrage an den Zielserver, um die domänenübergreifende Situation der Anfrage anzuzeigen und den Server zu fragen, ob er die domänenübergreifende Anfrage zulassen soll. Daher müssen Entwickler auf die „OPTIONS“-Anfrage in der PHP-API antworten, um dem Browser mitzuteilen, ob die Anfrage zulässig ist.
Werfen wir nun einen Blick auf die beste Strategie zur Implementierung domänenübergreifender Anfragen in der PHP-API:
Dies ist die einfachste Möglichkeit, domänenübergreifende Anfragen zu implementieren, wird jedoch nicht empfohlen. Der folgende Code kann in der entsprechenden PHP-Datei implementiert werden:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE ' );
header('Access-Control-Allow-Headers: Content-Type');
Dies ermöglicht domänenübergreifende Anforderungen für alle HTTP-Methoden.
Wir können auch spezifische domänenübergreifende Zugriffsberechtigungen basierend auf dem erforderlichen Domänennamen erteilen. Der folgende Code kann in der entsprechenden PHP-Datei implementiert werden:
if ($_SERVER['HTTP_ORIGIN'] == "http://adomain.com"){
header('Access-Control-Allow-Origin: http://adomain.com'); header('Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE'); header('Access-Control-Allow-Headers: Content-Type');
}
Der obige Code ermöglicht den angegebenen Domainnamen (http://adomain.com) domänenübergreifende Anfragen, andere Domänennamen erlauben keine domänenübergreifenden Anfragen.
Wenn es sich bei der Requester-Methode (http-Methode) um eine nicht einfache Anfrage handelt, sendet der Browser zunächst eine „OPTIONS“-Anfrage, um den Server zu fragen, ob er die Anfrage zulassen soll . Wenn der Server auf diese Preflight-Anfrage nicht antworten kann, wird die Anfrage abgebrochen. Um auf die Preflight-Anfrage zu antworten, muss die API die „OPTIONS“-Anfrage auf der Serverseite implementieren und die richtigen Header-Informationen in der Antwort zurückgeben, um dem Browser mitzuteilen, ob er bestimmte domänenübergreifende Anfragen zulässt. Wir können den folgenden Code verwenden, um dies zu erreichen:
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS'){
header('Access-Control-Allow-Origin: http://adomain.com'); header('Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE'); header('Access-Control-Allow-Headers: Content-Type'); header('Access-Control-Allow-Credentials: true'); // 是否允许共享 Cookie exit(0);
}
Standardmäßig werden keine Cookies gesendet domänenübergreifende Anfragen und HTTP-Authentifizierungsinformationen. Wenn Sie Cookies teilen müssen, müssen Sie es entsprechend auf dem Server konfigurieren, zum Beispiel:
header('Access-Control-Allow-Credentials: true'); // Ob das Teilen von Cookies erlaubt werden soll
Endlich, wann Bei der Entwicklung einer RESTful-API priorisieren wir domänenübergreifende Zugriffsrichtlinien basierend auf Domänennamen. Reagieren Sie auf die Anfrage „OPTIONS“, um dem Browser mitzuteilen, ob die Anfrage zulässig ist. Und schalten Sie die Cookie-Sharing-Funktion ein.
Kurz gesagt ist das Verständnis domänenübergreifender Probleme bei der PHP-API-Entwicklung ein wichtiger Aspekt. Die Beherrschung der entsprechenden domänenübergreifenden Strategien kann nicht nur die Entwicklungseffizienz verbessern, sondern auch die Sicherheit von Webanwendungen effektiv gewährleisten.
Das obige ist der detaillierte Inhalt vonBeste domänenübergreifende Strategien und Implementierungen in der PHP-API-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!