1

複数のサブドメイン(a.domainone.com、b.domainone.com、c.domainone.com)が別のサーバーでホストされ、別のメインドメインdomaintwo.comが別のサーバーでホストされているPHPプロジェクトがあります。

目的:ユーザーがdomaintwo.comドメインにログインしている場合にのみ、ユーザーは最初のドメインのサブドメインにアクセスできます。

ユーザーの移動:ユーザーがa.domainone.comにアクセスします>ユーザーは[今すぐ入力]をクリックするように求められます> [今すぐ入力]には、ユーザーがdomaintwo.comにログインしているかどうかを確認するajax機能があります(needloginまたはlogindoneとしての応答)>そうでない場合domaintwoのポップアップが開き、ログインが成功するとエコーが閉じます。logginsuccesfull先に進み、Enterキーを押します。

問題:ユーザーがEnterキーを押したときにログインした後>同じポップアップが開きます>エコーログインがすでに完了しています(セッションがすでに存在するかどうかを確認するための検証を行っています)>したがって、エコーセッション変数をチェックすると、a.subdomain.comで空白が見つかりましたが、直接アクセスするとdomaintwo.comログインハンドラーのphpページで、セッション変数の値を正しくエコーします。

だから私はチェックしました、ajax応答は常に'needlogin'です....!!!

ただのアイデアがありがたいです。

ありがとうございます。それでは、お元気で

編集

私はすでに<?phpヘッダー('Access-Control-Allow-Origin:*'); ?> domaintwo.comでは、そうでない場合、ajax呼び出しでifセッションが「needLogin」として応答されても受信しません。

4

2 に答える 2

1

ブラウザのセッションCookieからsession_idが必要になります。幸いなことに(あなたにとっては残念なことに)、クライアントブラウザは別のドメインからのCookieへのアクセスを許可しません。セッションCookieを取得できないため、セッションIDを取得できないため、ドメイン間でセッションを取得する方法はありません。

両方のサイトが同じサーバー上にあり、セッションストアに直接アクセスでき、セッションIDを再生成していない場合は、あるサイトでsession_idを読み取り、それをgetパラメーターで次のサイトに渡すなどの怪しげなことを行う可能性があります。サイトをクリックし、IDに基づいてセッションファイルを手動で開き、それを読み取ります...

于 2012-08-12T14:35:32.267 に答える
0

何が起こっているのかを知る必要がある場合:別のドメインからのデータにアクセスしているため、Webブラウザのクロスドメインポリシーが有効になります。

ウィキペディアで調査を開始できます。

于 2012-08-12T14:35:19.070 に答える