suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Es ist ein Fehler aufgetreten: Es wird versucht, Json-Daten mithilfe von PHP bei der Einrichtung des cPanel-Servers abzurufen

<p>Ich habe eine index.html-Datei mit Javascript: </p> <pre class="brush:php;toolbar:false;">asynchrone Funktion fetchCelebritiesData() { versuchen { const Antwort = Warten auf fetch('/data.php'); const data = Warten auf Antwort.json(); Rückgabedaten; } Catch (Fehler) { console.error('Fehler beim Abrufen der Daten:', Fehler); zurückkehren []; } }</pre> <p>Die PHP-Datei verbindet die Daten mit der Anwendung und ruft die Daten aus der Datei „names.json“ ab. </p> <pre class="brush:php;toolbar:false;"><?php // Prüfen Sie, ob die Anfrage von einer erlaubten Domain kommt $allowedOrigins = array("example.com", "www.example.com"); $origin = $_SERVER['HTTP_ORIGIN'] ?? ''; // HTTP_ORIGIN aus der Anfrage abrufen if (in_array($origin, $allowedOrigins)) { header("Access-Control-Allow-Origin: $origin"); } anders { header("HTTP/1.1 403 Verboten"); Ausfahrt; } //JSON-Daten lesen und ausgeben $data = file_get_contents("data.json"); header("Content-Type: application/json"); echo $data; ?></pre> <p>Diese Einstellung führt zu einem Fehler in der Konsole mit der folgenden Fehlermeldung: </p> <pre class="brush:php;toolbar:false;">ET https://example.com.com/data.php 403 fetchCelebritiesData @ (index):291 (anonym) @ (Index):375 laden (asynchron) (anonym) @ (Index):373 (index):295 Fehler beim Abrufen der Daten: SyntaxError: Unerwartetes Ende der JSON-Eingabe bei fetchCelebritiesData ((index):292:33) bei async (index):375:30 fetchCelebritiesData @ (index):295 Warten in fetchCelebritiesData (asynchron) (anonym) @ (Index):375 laden (asynchron) (anonym) @ (index):373</pre> <p>Benötigen Sie Hilfe beim Verständnis möglicher Probleme. Ich habe die Berechtigungen für die PHP- und JSON-Dateien und -Ordner überprüft und alles sieht gut aus. --6 4 4--</p> <p>Es wurde ein Protokoll erstellt, das ein erneutes Auftreten dieses Fehlers zeigt. </p> <p><code>[11.08.2023 09:08:58 UTC] PHP-Hinweis: Undefinierter Index: HTTP_ORIGIN in /home/pixellic/public_html/web-applications/celebrities-age-finder/get_secure_data.php auf Zeile 4</code></p> <p>Ich bin neu im Programmieren. </p> <p>Vielen Dank. </p> <p>Ich versuche, JSON-Daten mithilfe einer PHP-Datei sicher abzurufen. </p> <p>Aber ich habe einen 403-Fehler erhalten. </p>
P粉896751037P粉896751037519 Tage vor444

Antworte allen(1)Ich werde antworten

  • P粉124070451

    P粉1240704512023-08-14 14:32:25

    除非您在请求中发送了一个Origin头部(请参见手册),否则$_SERVER中不会有HTTP_ORIGIN元素。但是您可以使用REMOTE_HOST代替:

    $origin = $_SERVER['REMOTE_HOST'] ?? '';
    

    正如您所指出的,您的代码会导致403错误,这是因为此测试失败(因为$origin始终是''):

    if (in_array($origin, $allowedOrigins)) {
    

    请注意,在可能发送Origin头部的情况下,您可以将REMOTE_HOST用作备用:

    $origin = $_SERVER['HTTP_ORIGIN'] ?? $_SERVER['REMOTE_HOST'] ?? '';
    

    Antwort
    0
  • StornierenAntwort