cari

Rumah  >  Soal Jawab  >  teks badan

Ralat yang dihadapi: Mencuba mendapatkan data Json menggunakan PHP pada persediaan pelayan cPanel

<p>Saya mempunyai fail index.html yang mengandungi javascript: </p> <pre class="brush:php;toolbar:false;">async function fetchCelebritiesData() { cuba { respons const = tunggu fetch('/data.php'); data const = menunggu respons.json(); mengembalikan data; } tangkap (ralat) { console.error('Ralat mengambil data:', ralat); kembali []; } }</pre> <p>Fail PHP menyambungkan data kepada aplikasi dan mendapatkan data daripada fail names.json. </p> <pre class="brush:php;toolbar:false;"><?php // Semak sama ada permintaan itu datang daripada domain yang dibenarkan $allowedOrigins = array("example.com", "www.example.com"); $origin = $_SERVER['HTTP_ORIGIN'] ?? ''; // Dapatkan HTTP_ORIGIN daripada permintaan if (in_array($origin, $allowedOrigins)) { header("Access-Control-Allow-Origin: $origin"); } lain { header("HTTP/1.1 403 Dilarang"); keluar; } //Baca dan keluarkan data JSON $data = file_get_contents("data.json"); header("Content-Type: application/json"); echo $data; ?></pra> <p>Tetapan ini memberi saya ralat dalam konsol dengan mesej ralat berikut: </p> <pre class="brush:php;toolbar:false;">ET https://example.com.com/data.php 403 fetchCelebritiesData @ (indeks):291 (tanpa nama) @ (indeks):375 beban (async) (tanpa nama) @ (indeks):373 (indeks): 295 Ralat semasa mengambil data: SyntaxError: Penghujung input JSON yang tidak dijangka di fetchCelebritiesData ((index):292:33) pada async (indeks):375:30 fetchCelebritiesData @ (indeks):295 tunggu dalam fetchCelebritiesData (async) (tanpa nama) @ (indeks):375 beban (async) (tanpa nama) @ (indeks):373</pre> <p>Perlukan bantuan memahami isu yang mungkin berlaku. Saya telah menyemak kebenaran pada fail dan folder PHP dan JSON dan semuanya kelihatan baik. --6 4 4--</p> <p>Log telah dijana menunjukkan berulangnya ralat ini. </p> <p><kod>[11-Ogos-2023 09:08:58 UTC] Notis PHP: Indeks tidak ditentukan: HTTP_ORIGIN dalam /home/pixellic/public_html/web-applications/celebrities-age-finder/get_secure_data.php pada baris 4</kod></p> <p>Saya baru dalam pengekodan. </p> <p>Terima kasih. </p> <p>Saya cuba mendapatkan data json dengan selamat menggunakan fail php. </p> <p>Tetapi saya mendapat ralat 403. </p>
P粉896751037P粉896751037519 hari yang lalu445

membalas semua(1)saya akan balas

  • P粉124070451

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

    Melainkan anda menghantar Origin头部(请参见手册),否则$_SERVER中不会有HTTP_ORIGIN元素。但是您可以使用REMOTE_HOSTdalam permintaan anda sebaliknya:

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

    Seperti yang anda nyatakan, kod anda menghasilkan ralat 403 kerana ujian ini gagal (kerana $origin始终是''):

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

    Sila ambil perhatian bahawa ia mungkin dihantar Origin头部的情况下,您可以将REMOTE_HOST sebagai sandaran:

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

    balas
    0
  • Batalbalas