検索

ホームページ  >  に質問  >  本文

エラーが発生しました: cPanel サーバーのセットアップで PHP を使用して Json データを取得しようとしています

<p>JavaScript を含むindex.html ファイルがあります: </p> <pre class="brush:php;toolbar:false;">非同期関数 fetchCelebritiesData() { 試す { const 応答 = await fetch('/data.php'); const data = 応答を待ちます.json(); データを返す。 } キャッチ (エラー) { console.error('データ取得エラー:', error); 戻る []; } }</pre> <p>PHP ファイルはデータをアプリケーションに接続し、names.json ファイルからデータを取得します。 </p> <pre class="brush:php;toolbar:false;"><?php // リクエストが許可されたドメインからのものであるかどうかを確認します $allowedOrigins = array("example.com", "www.example.com"); $origin = $_SERVER['HTTP_ORIGIN'] ?? ''; // リクエストから HTTP_ORIGIN を取得します if (in_array($origin, $allowedOrigins)) { header("アクセス制御許可オリジン: $origin"); } それ以外 { header("HTTP/1.1 403 禁止"); 出口; } //JSONデータを読み取って出力する $data = file_get_contents("data.json"); header("Content-Type: application/json"); $data をエコーし​​ます。 ?></pre> <p>この設定により、コンソールに次のエラー メッセージが表示されます。</p> <pre class="brush:php;toolbar:false;">ET https://example.com.com/data.php 403 fetchCelebritiesData @ (インデックス):291 (匿名) @ (インデックス):375 ロード (非同期) (匿名) @ (インデックス):373 (インデックス):295 データ取得エラー: SyntaxError: JSON 入力の予期しない終了 fetchCelebritiesData で ((インデックス):292:33) 非同期時 (インデックス):375:30 fetchCelebritiesData @ (インデックス):295 fetchCelebritiesData で待機します (非同期) (匿名) @ (インデックス):375 ロード (非同期) (匿名) @ (インデックス):373</pre> <p>考えられる問題を理解するために助けが必要です。 PHP と JSON のファイルとフォルダーのアクセス許可を確認しましたが、すべて問題ないようです。 --6 4 4--

<p>このエラーの再発を示すログが生成されました。 </p> <p><code>[11-Aug-2023 09:08:58 UTC] PHP 通知: 未定義のインデックス: /home/pixellic/public_html/web-applications/celebrities-age-finder/get_secure_data.php の HTTP_ORIGIN 4 行目</code></p> <p>コーディングの初心者です。 </p> <p>ありがとうございます。 </p> <p>phpファイルを使って安全にjsonデータを取得してみます。 </p> <p>しかし、403 エラーが発生しました。 </p>
P粉896751037P粉896751037519日前447

全員に返信(1)返信します

  • P粉124070451

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

    リクエストで Origin ヘッダーを送信しない限り、$_SERVER には HTTP_ORIGIN# はありません (Manual を参照) ##要素。ただし、代わりに REMOTE_HOST を使用することもできます: リーリー

    あなたが指摘したように、このテストが失敗するため、コードは 403 エラーを引き起こします (

    $origin は常に '' であるため): リーリー

    Origin ヘッダーを送信できる場合は、フォールバックとして REMOTE_HOST を使用できることに注意してください: リーリー

    返事
    0
  • キャンセル返事