Heim >Backend-Entwicklung >PHP-Tutorial >Wie man mit domänenübergreifenden Problemen in der PHP-Entwicklung umgeht

Wie man mit domänenübergreifenden Problemen in der PHP-Entwicklung umgeht

WBOY
WBOYOriginal
2023-10-10 21:18:293037Durchsuche

Wie man mit domänenübergreifenden Problemen in der PHP-Entwicklung umgeht

So gehen Sie mit domänenübergreifenden Problemen in der PHP-Entwicklung um

Einführung:
Mit der rasanten Entwicklung des Internets sind domänenübergreifende Anfragen zu einem häufigen Problem im Entwicklungsprozess geworden. Domänenübergreifend bedeutet, dass auf der Browserseite die aktuelle Webseite über XMLHttpRequest oder die Fetch-API eine domänenübergreifende HTTP-Anfrage stellt, also auf eine nicht ursprüngliche URL zugreift. Bei der PHP-Entwicklung müssen wir uns oft mit domänenübergreifenden Anfragen befassen. In diesem Artikel wird der Umgang mit domänenübergreifenden Problemen bei der PHP-Entwicklung vorgestellt und spezifische Codebeispiele bereitgestellt.

1. Domänenübergreifende Probleme verstehen

  1. Same-Origin-Richtlinie:
    Die Same-Origin-Richtlinie ist eine Browser-Sicherheitsrichtlinie, die einschränkt, wie ein Webseitendokument oder -skript mit anderen Quellen interagiert. Wenn Protokoll, Port und Host zweier URLs identisch sind, wird davon ausgegangen, dass sie denselben Ursprung haben. Ansonsten ist es domänenübergreifend.
  2. Cross-Origin Resource Sharing (CORS):
    CORS ermöglicht es dem Server, in der Antwort anzugeben, dass Webseiten unterschiedlicher Herkunft auf seine eigenen Ressourcen zugreifen dürfen.

2. Methoden zur Lösung domänenübergreifender Probleme

  1. Ändern des Antwortheaders auf der Serverseite
    Durch Ändern der Antwortheaderinformationen auf der Serverseite kann Zugriff auf domänenübergreifende Anforderungen erreicht werden.

Im PHP-Code können Sie die Header-Funktion verwenden, um den Antwortheader festzulegen. Das Folgende ist ein Beispiel für die Einstellung, um domänenübergreifende Anfragen zuzulassen:

header('Access-Control-Allow-Origin: *'); // 允许所有来源的跨域请求
header('Access-Control-Allow-Methods: *'); // 允许所有HTTP方法的跨域请求
header('Access-Control-Allow-Headers: *'); // 允许所有的请求头
  1. JSONP (JSON mit Auffüllung)
    JSONP ist eine domänenübergreifende Anfragemethode, die durch dynamisches Erstellen von <script></script>-Tags implementiert wird. In JSONP wird das XMLHttpRequest-Objekt nicht mehr verwendet, aber Nicht-Quellressourcen werden durch dynamisches Einfügen von <script></script>-Tags abgerufen. <script></script>标签实现的一种跨域请求方式。在JSONP中,不再使用XMLHttpRequest对象,而是通过动态插入<script></script>标签的方式来获取非同源的资源。

以下是一个简单的PHP返回JSONP格式数据的示例:

<?php
    $callback = $_GET['callback']; // 获取前端传递的回调函数名称
    $data = array('name' => 'John', 'age' => 20);
    $json = json_encode($data);
    echo $callback . '(' . $json . ')'; // 输出jsonp格式的数据
?>

在前端页面中,可以通过创建<script></script>

    Hier ist ein einfaches Beispiel dafür, wie PHP Daten im JSONP-Format zurückgibt:
  1. <script>
        function handleResponse(data) {
            // 处理获取到的数据
        }
    
        var script = document.createElement('script');
        script.src = 'http://example.com/api.php?callback=handleResponse';
        document.body.appendChild(script);
    </script>

    Auf der Frontend-Seite können JSONP-Daten angefordert werden, indem ein <script></script>-Tag erstellt wird:
  2. <?php
        $url = $_GET['url']; // 获取前端传递的目标url
        $data = file_get_contents($url, false);
        echo $data; // 将目标服务器的响应返回给客户端
    ?>

Verwendung eines Proxyservers

In der PHP-Entwicklung können Sie das Problem domänenübergreifender Anforderungen lösen, indem Sie einen Proxyserver erstellen. Der Proxyserver ist dafür verantwortlich, die Anfrage des Clients an den Zielserver weiterzuleiten und die Antwort des Zielservers an den Client zurückzusenden. Auf diese Weise befinden sich die Client- und Serveranforderungen in derselben Domäne, wodurch domänenübergreifende Probleme vermieden werden.

Das Folgende ist ein Beispielcode für einen einfachen PHP-Proxyserver:

// 使用ajax方式请求代理服务器
$.ajax({
    url: 'http://example.com/proxy.php',
    data: { url: 'http://example.com/api' },
    success: function(data) {
        // 处理获取到的数据
    }
});

Auf der Frontend-Seite können Sie domänenübergreifende Ressourcen erhalten, indem Sie eine Anfrage an den Proxyserver senden: 🎜rrreee🎜Fazit: 🎜Cross- Domänenprobleme in der PHP-Entwicklung sind eine häufige Herausforderung. In diesem Artikel werden drei gängige Methoden zur Lösung domänenübergreifender Probleme vorgestellt: serverseitige Änderung von Antwortheadern, JSONP und Verwendung von Proxyservern. Wählen Sie entsprechend den spezifischen Entwicklungsanforderungen und -szenarien geeignete Methoden zur Bewältigung domänenübergreifender Probleme aus und implementieren Sie spezifischen Code basierend auf der tatsächlichen Situation. Durch die korrekte Behandlung domänenübergreifender Probleme können wir sicherstellen, dass unsere Anwendungen normal mit anderen Websites interagieren und eine gute Benutzererfahrung bieten können. 🎜

Das obige ist der detaillierte Inhalt vonWie man mit domänenübergreifenden Problemen in der PHP-Entwicklung umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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