2017-12-29 27 views
0

PHPでJSONデータを生成し、AJAXを使用してロードしています。ログイン処理中にPHPセッション変数(auth)が設定されている場合にのみ、JSONを戻したいとします。私は、ブラウザで直接セッションチェック作品をgetjson.phpを開くとajaxコールでPHPセッションチェックが機能しない

getjson.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

ブラウザがセッションCookieをサーバーに送信していないようです。 これを確認するには、HTTPリクエストを調べます。 Chromeの場合、デベロッパーツールで[ネットワーク]タブを確認し、リクエストを選択して[ヘッダー]タブを表示し、[リクエストヘッダー]の下にある[Cookie:]を探します。

「フェッチ」APIに関するこの一見関連記事を見つけました。それは役に立ちますか? https://github.com/github/fetch/issues/349

+0

恐ろしい!それはそれだった。私はajaxリクエストと一緒に正しいヘッダを送らなければなりません。さもなければ、クッキーは送られません。 – Kokodoko

関連する問題