2016-04-20 13 views
5

Ich benutze Fetch API in meiner Anwendung.Fetch Api nicht in der Lage, Sitzung von PHP-Server

Ich habe eine PHP-Server-Seite, um Sitzungsdaten zu erhalten, die bereits vorher definiert wurden. Es sah so aus:

Ich bekam auch eine andere HTML-Seite, um die Sitzungsdaten zu bekommen. Es seemd wie folgt aus:

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

Das Problem ist, wenn ich $ Schnipsel() verwenden, können Sitzungsdaten werden richtig gezeigt. Aber wenn ich fetch() verwende, waren die Sitzungsdaten nicht definiert.

Also, was schief geht und wie kann ich es beheben? Vielen Dank!

+0

Sie verwenden 'ajax', aber übergeben' session_id' und 'start_session' nicht und starten eine neue Sitzung. Aber wenn Sie im Browser dieses Skript anfordern, speichern Sie session_id im Browser-Cookie und Sie können die richtige Sitzung bekommen. – Naumov

Antwort

7

Wenn Sie fetch Cookies senden möchten, Sie müssen die Option credentials angeben.

Weitere Informationen finden Sie unter https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch#Parameters.

+1

Anmeldeinformationen können auf 'same-origin' gesetzt werden – galki

+1

Was ist der Unterschied zwischen 'include' und 'same-original'? Ich kann diese Informationen nirgends finden. – kojow7

+0

@ kojow7 [Überprüfen Sie die MDN-Dokumente] (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) (Ich habe versucht, hier zu kopieren, aber es war ein Durcheinander). Im Grunde, ein relevantes Beispiel für diese Antwort, könnte mysite.com mit 'include' eine Sitzung von yoursite.com bekommen, aber mit 'same-origin' mysite.com konnte die Sitzung von yoursite.com nicht erreichen. –

1

jquery ajax ist eine übliche ajax-Anfrage, und der Browser sendet den Cookie-Header mit der Sitzungs-ID, die Ihre Sitzung identifiziert.

tut holen - stattdessen wird eine neue Sitzung mit aus beliebigen Daten erstellt wird auf die PHP-Session-ID entweder mit einer URL oder der Kopf

haben einen Blick an: http://php.net/manual/en/session.idpassing.php