Cross-Domänen-Probleme sind ein sehr häufiges Problem in der Webentwicklung. Insbesondere in Anwendungen mit separaten Front-End- und Back-End-Anwendungen muss das Front-End möglicherweise unter verschiedenen Domainnamen zugreifen, und der Browser blockiert aus Sicherheitsgründen standardmäßig die Cross-Domain-Anfragen. Zu diesem Zeitpunkt muss der Server HTTP-Header festlegen, um Cross-Domain-Anforderungen zu ermöglichen. In PHP können wir mit der Header () -Funktion mit Cross-Domain-bezogenen Headerinformationen einstellen.
Cross-Domänen-Ressourcenfreigabe (CORS) ist ein Mechanismus, der Cross-Domänen-Probleme löst, indem Browser Anforderungen an verschiedene Domänen einleiten können. CORS stützt sich hauptsächlich auf HTTP-Header, insbesondere auf Access-Control-Allow-Origin . Wenn ein Browser eine Anforderung an einen Server in einer anderen Domäne initiiert, muss der Server in den Antwortheader Zugriffskontroll-Allow-Origin in den Antwort-Header einbeziehen, um explizit Cross-Domänen-Anforderungen zuzulassen.
Access-Control-Allow-Origin ist ein wichtiger Header im CORS-Standard, der feststellt, auf welche Domainnamen auf Ressourcen zugreifen können. Sein Wert kann in folgenden Fällen sein:
* : bedeutet, dass alle Domainnamen auf die Ressource zugreifen können.
http://m66.net : Nur dieser angegebene Domänenname darf auf Ressourcen zugreifen.
NULL : bedeutet, dass Cross-Domänen-Anfragen nicht zulässig sind.
Wenn wir beispielsweise dem Domänennamen http://m66.net zulassen möchten, Cross-Domain-Anforderungen zu erstellen, müssen wir den entsprechenden Header im PHP-Skript festlegen.
In PHP wird das Einstellen von HTTP -Header -Informationen über die Header () -Funktion implementiert. Um Cross-Domänen-Anforderungen zu ermöglichen, besteht der grundlegendste Schritt darin , die Zugriffskontrolle mit Header () zu setzen.
<?php
// Zulassen vonhttp://m66.netCross-Domain-Anfragen
header("Access-Control-Allow-Origin: http://m66.net");
// Wenn Sie andere unterstützen müssenHTTPVerfahren(wiePOST、PUT、DELETEWarten),Dies kann festgelegt werden:
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
// wie果需要允许携带cookie,Sie müssen den folgenden Header einstellen
header("Access-Control-Allow-Credentials: true");
// Stellen Sie den zugelassenen Anforderungsheader ein
header("Access-Control-Allow-Headers: Content-Type, Authorization");
// In der praktischen Anwendung,Sie können den Namen der Quelldomänennamen der Anfrage bestimmen,Dynamisch Cross-Domänen-Header einstellen
$allowedOrigin = "http://m66.net";
if ($_SERVER['HTTP_ORIGIN'] === $allowedOrigin) {
header("Access-Control-Allow-Origin: $allowedOrigin");
}
?>
Access-Control-Allow-Origin : Ermöglicht dem angegebenen Domänennamen Cross-Domänen-Anforderungen. Wenn Sie mehrere Domain -Namen zulassen möchten, können Sie die Quelle der Anforderung dynamisch bestimmen und verschiedene Domänennamen festlegen.
Access-Control-Allow-Methoden : Ermöglichte HTTP-Methoden (z. B. GET, Post usw.).
Access-Control-Allow-Credentials : Wenn Sie ein Cookie senden müssen, müssen Sie den Header auf true einstellen.
Access-Control-Allow-Header : Erlaubte Anforderungsheader (z. B. Inhaltsart oder Autorisierung ).
Wenn der Browser einige komplexe Cross-Domain-Anforderungen (z. B. mit benutzerdefinierten Headern oder Verwendung von Put, Löschen von Methoden usw.) initiiert, sendet der Browser zunächst eine Optionsanforderung , die als Preflight-Anfrage bezeichnet wird. Mit dieser Anfrage wird prüfen, ob der Server Cross-Domain-Anforderungen zulässt. In der Antwort auf die Vorfilsanforderung muss der Server auch den entsprechenden CORS -Header zurückgeben.
Zum Beispiel:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
// Bearbeiten Sie Anfragen vor dem Flug
header("Access-Control-Allow-Origin: http://m66.net");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Access-Control-Allow-Credentials: true");
exit();
}
?>
Optionsanfragen müssen keine tatsächlichen Daten zurückgeben. Der CORS-Header muss jedoch korrekt eingestellt werden, um dem Browserserver zu sagen, ob Cross-Domain-Anforderungen zulässig sind.
Durch die Verwendung von PHP- Header () -Funktion können wir einfach cross-domänenbezogene HTTP-Header, insbesondere Zugriffskontroll-Allow-Origin , einstellen, um Cross-Domänen-Anforderungen für bestimmte Domainnamen zu ermöglichen. Nach den tatsächlichen Bedürfnissen können wir CORS -Richtlinien flexibel konfigurieren, um ein Gleichgewicht zwischen Sicherheit und Funktionalität zu gewährleisten.
Cross-Domänen-Ressourcenfreigabe ist ein Problem, das in Webanwendungen nicht ignoriert werden kann. Beherrschen Sie, wie CORS-Header in PHP konfiguriert werden können, um Cross-Domain-Probleme zu lösen und die Zugänglichkeit und Skalierbarkeit Ihrer Anwendung zu verbessern.