2017-12-29 48 views
0

PHP에서 JSON 데이터를 생성하고 AJAX를 사용하여로드하고 있습니다. PHP 세션 변수 (auth)가 로그인 프로세스 중에 설정되면 JSON 만 반환하려고합니다. 내가 브라우저 세션 확인 작업에 직접 getjson.php을 열 때 getjson.phpajax 호출에서 PHP 세션 확인이 작동하지 않습니다.

<?php 
session_start(); 
if(!isset($_SESSION['auth'])){ 
    // code that sends an error back 
} else { 
    // code that sends json back 
} 
?> 

fetch("getjson.php") 
    .then(res => res.json()) 
    .then(data => { // code that renders the data }) 
    .catch(e => { 
     console.log("Error " + e) 
    }) 

app.js. json은 사용자가 로그인 할 때만 표시됩니다.

그러나 getjson.php을 ajax를 사용하여 가져 오면 세션이 인식되지 않고 php가 항상 오류 메시지를 반환합니다.

ajax를 사용하여 가져온 데이터를 보내기 전에 어떻게 세션을 검사 할 수 있습니까?

답변

1

브라우저가 세션 쿠키를 서버로 보내지 않는 것처럼 들립니다. HTTP 요청을 검사하여이를 확인할 수 있습니다. Chrome의 개발자 도구에서 '네트워크'탭을 선택하고 요청을 선택한 다음 '헤더'탭을보고 '요청 헤더'에서 '쿠키 :'를 찾습니다.

"가져 오기"API와 관련하여이 기사와 관련이있는 것으로 나타났습니다. 그게 도움이 되니? https://github.com/github/fetch/issues/349

+0

굉장! 그거였다. 아약스 요청과 함께 올바른 헤더를 보내야합니다. 그렇지 않으면 쿠키가 전송되지 않습니다. – Kokodoko