23257


Laravelを勉強中で、セッション共有しようと色々試したのですが、共有できずに困っています。  
2つの問題が重なっている（？）のかちょっとわからず混乱してしまっており、教えてほしいです。

1つのサーバ内にサブドメインで分けた複数のアプリが有り、その全てでセッション共有をしようと思っています。

[code]

    directory/
        + sub1.myhost.test (Laravel5.1が入っています)
        + sub2.myhost.test (ここもLaravel5.1が入っています)
        + sub3.myhost.test (ここにもLaravel5.1が入っています)
        + sub4.myhost.test (ここにもLaravel5.1が入っています)
        + session (sessionファイルをここに保存しようと思います)
    
[/code]

（Laravelのサブドメインルーティングというのがあったのですが、それぞれの規模と内容が異なるため、別アプリにする方針ということで決定しました。無理であれば変更もやむを得ません。）

設定しているのは  
`/config/session.php`

[code]

    'driver' => 'file',
    'files' => base_path('../session'), 
    'domain' => '.myhost.test', 
    
[/code]

`/.env`

[code]

    APP_KEY=XXXX これを全てのアプリで同一にする
    
[/code]

これらを設定しています。

例えば、sub2からsub1に対してajaxでPUTメソッドでリクエストを投げ  
（プリフライトリクエストがかかる為、.htaccessにて下記を設定しています。）

[code]

    Header set Access-Control-Allow-Origin: *
    Header set Access-Control-Allow-Methods: PUT,DELETE
    
[/code]

`request()->session()`メソッドの返り値`Illuminate\Session\Store`のIDを見るとリクエストのたびに変化してしまっています。ここが問題かなと思いつつも、どうすればよいかわからず、ご回答頂けますと幸いです。  
よろしくお願いします！！


CC BY-SA 3.0
2016-03-18T06:03:57.307
23243
2016-03-19T05:31:40.660
2016-03-19T05:31:40.660
2238
14839
question
javascript php apache laravel-5
セッション共有（？）の実現方法


問題はクロスドメインでAjax通信を行っていることではないでしょうか。

クロスドメインのAjax通信でCookieを送信するためには、以下の全てを満たす必要があります。

  * リクエストを受ける側で `Access-Control-Allow-Credentials: true` を送信する
  * 上記ヘッダと `Access-Control-Allow-Origin: *` は併用できないため、オリジンを明示する。  
※複数のオリジンを列挙することはできないので、毎回アクセス元の Origin を出力することになります。

  * Ajaxリクエストを送る側では、XMLHttpRequest の `withCredentials` を設定

参考

  * [CORSリクエストでクレデンシャル(≒クッキー)を必要とする場合の注意点 - Qiita](http://qiita.com/kawaz/items/1e51c374b7a13c21b7e2)
  * [HTTP アクセス制御 (CORS) | MDN](https://developer.mozilla.org/ja/docs/HTTP_access_control#Requests_with_credentials)


CC BY-SA 3.0
2016-03-18T11:29:51.523
23257
2016-03-18T11:29:51.523
8000
23243
answer