シナリオ: たとえば、ユーザーログインインターフェース a とユーザー情報取得インターフェース b の 2 つのインターフェースがあります。ブラウザから呼び出す場合はまったく問題ありませんが、jq の
ajax
を使用してこれら 2 つのインターフェイスを呼び出す必要があると、問題が発生します。
まずブラウザについて話しましょう。
ブラウザにログイン インターフェイスのアドレスを入力し、パラメータを渡すと、ログインが成功しました。サーバー(php)は私のユーザーID、ユーザー名などをsession
に保存します。次に、ユーザー情報インターフェイスを要求します b. サーバーはセッションからユーザー情報を直接検索し、ブラウザに戻ります。
ajax について話しましょう。
ajax を使用して js でログイン インターフェイスを呼び出し、成功情報を返し、ログインに成功しました。ユーザー情報もセッションに保存されます。しかし、ajax を使用してインターフェイス b を呼び出してユーザー情報を取得したときに、問題が発生し、session
が見つかりませんというメッセージが表示されました。
コンソールで確認しました。ブラウザが正常にログインすると、次回同じドメイン名でインターフェースをリクエストすると、set-cookie
の情報が自動的に返されます。リクエストヘッダーで送信され、サーバー内のcookie
のデータを取得します。 session
の情報も返されます。ただし、次回同じドメイン名でインターフェイスをリクエストした場合、set-cookie
は自動的に送信されません。サーバーが見つかりません。cookie
データ。 session
セッション データを取得したい場合、ajax リクエストを行うときに Cookie を手動で送信する必要がありますか?そうでない場合、セッション データを取得するにはどうすればよいですか?
黄舟2017-05-16 12:05:02
ajax
请求添加参数 xhrFields: { withCredentials: true },
php設定header('Access-Control-Allow-Credentials:true');
巴扎黑2017-05-16 12:05:02
セッションは Cookie に依存しています。サーバー上の Cookie はどこに保存されていますか?
クライアントのブラウザに Cookie を渡しても、それはサーバー内の Cookie と一致しますか?
そのため、サーバー上でセッションを行うことはできず、トークンのみを使用することができ、バックグラウンドで情報を保存するには Redis などを使用する必要があります。