2016-04-20 21 views
5

私のアプリケーションでFetch Apiを使用しています。PHPサーバからセッションを取得できません

すでに定義済みのセッションデータを取得するためのPHPサーバーページがあります。このようにseemd:

<?php 
header('Content-Type: application/json; charset=UTF-8'); 
header('Access-Control-Allow-Origin: *'); 

session_start(); 
// $_SESSION['data'] already defined before 
$result = array(); 
// print_r($_SESSION['data']); 
if (isset($_SESSION['data'])) { 
    $result = $_SESSION['data']; 
    $result['code'] = 'ok'; 
} else { 
    $result['code'] = 'error'; 
} 
echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); 

私もセッションデータを取得するために別のHTMLページを得ました。

<script> 
    $(function() { 
     // use $.ajax 
     $.ajax({ 
      url: 'session.php', 
      dataType: 'json' 
     }) 
     .done(function(res) { 
      console.log(res); 
     }); 
     // end 

     // use fetch 
     fetch('session.php').then(function(res) { 
     if (res.ok) { 
      res.json().then(function(obj) { 
      console.log(obj); 
      }); 
     } 
     }); 
     // end 
    }); 
    </script> 

$ .ajax()を使用すると、セッションデータが正しく表示されるという問題があります。しかし、私がfetch()を使うと、セッションデータは未定義です。

だから何がうまくいかず、どうすれば修正できますか?ありがとう!

+0

'ajax'を使用しますが、新しいセッションを開始する' session_id'と 'start_session'を渡さないでください。しかし、あなたがこのスクリプトをリクエストすると、ブラウザのcookieにsession_idが保存され、正しいセッションを取得できます。 – Naumov

答えて

7

: -

doesntのをフェッチする代わりに、新しいセッションは、任意のデータから使用して作成され いずれかのURLまたはヘッダ

でPHPのセッションIDを送信するには、見ていますcredentialsオプションを指定する必要があります。

詳細はhttps://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch#Parametersを参照してください。

+1

資格情報は 'same-origin'に設定することができます – galki

+1

資格情報オプションを提供する場合、 'include'と 'same-origin'の違いは何ですか?私はどこにでもこの情報を見つけることができないようです。 – kojow7

+0

@ kojow7 [MDNドキュメントを確認](https://developer.mozilla.org/en/US/docs/Web/API/Fetch_API/Using_Fetch)(私はここにコピーペーストしようとしましたが、混乱していました)。基本的に、この回答の関連する例は、 'include'、mysite.comでyoursite.comからセッションを取得できますが、 'same-origin'でmysite.comはyoursite.comのセッションを取得できませんでした。 –

1

jquery ajaxは通常のAjaxリクエストで、ブラウザはセッションを識別するセッションIDを持つCookieヘッダーを送信しています。あなたはfetchはクッキーを送信する場合は、http://php.net/manual/en/session.idpassing.php

関連する問題