찾다

 >  Q&A  >  본문

오류 발생: cPanel 서버 설정에서 PHP를 사용하여 Json 데이터를 가져오는 중

<p>javascript가 포함된 index.html 파일이 있습니다. </p> <pre class="brush:php;toolbar:false;">비동기 함수 fetchCelebritiesData() { 노력하다 { const 응답 = fetch('/data.php')를 기다립니다; const 데이터 = 응답을 기다립니다.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("콘텐츠 유형: 애플리케이션/json"); 에코 $ 데이터; ?></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> <p><code>[2023년 8월 11일 09:08:58 UTC] PHP 알림: 정의되지 않은 색인: /home/pixellic/public_html/web-applications/celebrities-age-finder/get_secure_data.php의 HTTP_ORIGIN 4행

<p>코딩이 처음입니다. </p> <p>감사합니다. </p> <p>php 파일을 이용하여 안전하게 json 데이터를 얻으려고 합니다. </p> <p>하지만 403 오류가 발생했습니다. </p>
P粉896751037P粉896751037519일 전441

모든 응답(1)나는 대답할 것이다

  • P粉124070451

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

    요청에 Origin头部(请参见手册),否则$_SERVER中不会有HTTP_ORIGIN元素。但是您可以使用REMOTE_HOST를 보내지 않은 경우:

    으아악

    당신이 지적한 대로, 이 테스트가 실패하기 때문에($origin始终是'' 때문에) 코드에서 403 오류가 발생합니다.

    으아악

    백업으로 Origin头部的情况下,您可以将REMOTE_HOST 전송될 수 있습니다.

    으아악

    회신하다
    0
  • 취소회신하다