私のアプリの構造は次のとおりです。サブドメインにフロントエンド js アプリ (Angular) がありapp.
、ルートとapi.
サブドメインにバックエンド (PHP) があります。私のログインは、セッション Cookie を保存するルート経由で行われます。Cookie は、パス「/」を持つすべてのサブドメインに保存されます。
APIで直接Cookieを取得できます。ただし、同じ URL で、フロントエンドからの ajax GET 呼び出しを介して、Cookie は NULL です。
しかし、Postman (chrome アプリ) のようなアプリケーションを使用して、同じ URL への GET 要求を送信すると、Cookie を取得できます。したがって、私のアプリのフロントエンドに固有のようです。
私のangularアプリの設定は次のとおりです。アプリの設定でこれらのデフォルトを設定しました:
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
Chrome と FF の両方でテストしました。フロントエンドとバックエンドの間で Cookie/セッションが利用できない理由がわかりません
2013 年 11 月 20 日更新
また、使用していたバージョンの Angular にも問題がありました。$resource
の代わりに使用していたため、そのバージョンの angular は、使用時に設定を http リクエストに$http
添付していませんでした。最新の angularjs バージョンに更新すると、問題が解決しました。withCredentials が設定されていなかったため、xhr リクエストと共に Cookie が送信されませんでした。愚かなことに、クッキーが送信されているかどうかを確認していませんでした。withCredentials
$resource