質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

0回答

637閲覧

homestead(vagrant)で突然sessionデータが取れなくなった

laravel5

総合スコア32

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/12/04 07:59

nuxt.js(SSR)
laravel5の環境になります。
homestead(vagrant)

本番、テスト環境は

nuxt.js実行環境は、Google Cloud PlatForm
laravelはAWSのs3 EC2になります。

1、nuxt.jsの登録確認画面用のためにlaravelでsessionにデータを入れ、
2、nuxt.jsの確認画面に遷移した後、確認内容を取得する為、nuxt.jsからapiのget通信にて
3、laravelのsessionに保存されたデータを取ろうとすると今まで取れていたsessionデータが取れなくなりました。

今までは動いていました。また、本番サーバー、テストサーバーでは動作しております。

sessionデータは下記のフォルダ内に保存されております。

storage/framework/sessions/

debug等で調べてみると、

$id = $request->session()->getId();

で1、3の処理のsessionIDが違うものになっていました。
その為、テスト環境、本番環境のsessionIDを

$id = $request->session()->getId(); \Log::info($id);

で見てみると変わっておりませんでした。
その為、再度、下記をデプロイし、laravel logを見てみると
下記のログが出力されました。

$headers = $request->headers; \Log::info($headers);
production.INFO: Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.9,en;q=0.8 Authorization: Bearer ******************** Content-Length: Content-Type: Cookie: _ga=GA1.2.***********; _gcl_au=1.1..***********; _fbp=fb.1..***********; _ts_yjad=.***********; mf_user=.***********|; ***********-***********|***********.***********$***********.***********|***********||2|||0|17.26|61.***********; _session=cpR***********; _gid=GA1.2.***********.***********; pt_s_491b6443=vt=***********&cad=; pt_491b6443=uid=***********&nid=0&vid=Epzv-sOe6YPcrP6nYAjtbA&vn=10&pvn=1&sact=***********&to_flag=0&pl=***********/l9qR-deL0GBWYA*pt************ Host: ***********.com Origin: https://***********.com Referer: https://***********.com/ Sec-Ch-Ua: "Chromium";v="86", "\"Not\A;Brand";v="99", "Google Chrome";v="86" Sec-Ch-Ua-Mobile: ?0 Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-site User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36

ログを確認すると
ローカル環境では、Content-Type: と Host: の間に Cookie: 情報が入っておりませんでしたが、
本番、テスト環境では、Cookie: 情報が入っており、さらに、_session=にsessionIDが入っていました。

上記のことから、原因は、
通常、sessionを使うにはブラウザのcookieに格納されたsessionIDを
読み取り、読み取られたsessionIDでsession情報を使用していると思いますが、
ローカル環境では、以前、は送られていたと思うのですが、cookie情報が何が原因で、
送られなくなりsessionを取得できなくなっている様です。

ご存知の方おられましたがご教授の方お願い致します。

sessionの記述方法は下記で行っております。

sessionデータ登録 $request->session()->put('key', 'value'); sessionデータ全取得 $request->session()->all(); 特製sessionデータ取得 $request->session()->get('key');

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki84web

2020/12/04 15:38

コンフィグファイル内のcookieに関する設定は同じですか?(secure属性等)
laravel5

2020/12/07 01:35

ご返信ありがとう御座います! nuxt.config.jsの設定内容は本番、テストと 見比べて見ても同じでした。 nuxt.config.js内の原因と思われる、axiosの記述は下記のみでした。 ``` axios: { credentials: true, baseUrl: '/api' }, ``` ただ本番、テストにgoogle cloud platformへデプロイする際に、 npm run deploy:test という形式でコマンド実施を行うのですが、 package.json内のscript内の 下記のコマンドが実行され、 "deploy:test": "npm run build:test && gcloud app deploy app.test.yaml --quiet --project test-project", app.test.yamlファイル(下記の内容)が実行される様になっています。 その中身の- url: /.*のsecureがalwaysになっているのですが、 そちらは関係無いのでしょうか? よろしくお願い致します。 runtime: nodejs10 env: standard instance_class: F4 # automatic_scaling: # min_instances: 0 handlers: - url: /_nuxt static_dir: .nuxt/dist/client secure: always - url: /robots.txt static_files: static/robots.stg.txt upload: static/robots.stg.txt - url: /(.*\.(gif|png|jpg|ico|txt))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg|ico|txt)$ secure: always - url: /.* script: auto secure: always env_variables: NUXT_HOST: '0.0.0.0' NUXT_PORT: '8080' NODE_ENV: 'test'
laravel5

2020/12/08 06:28

試しに、axiosにてpost通信する前に this.$axios.setHeader('Cookie', "cookieTest") this.$axios.setHeader('sessionTEST', "sessionTest") を追加して、laravel側でheaders情報をログ出力してみました。 $headers = $request->headers; \Log::info($headers); すると、下記のheaders情報が書き出されていました。 sessionTESTというheaders情報は追加されているので Cookieが消えています。 そもそもheaders内のcookieデータが、そもそもLaravel側で消されている様です。 こちらどう対応すれば良いか分かりますでしょうか? local.INFO: Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate Accept-Language: ja,en-US;q=0.9,en;q=0.8 Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMTkyLjE2OC44MC44MC9hcGkvcmVmcmVzaCIsImlhdCI6MTYwNzQwMjU4MSwiZXhwIjoxNjA3NDEyMjA5LCJuYmYiOjE2MDc0MDg2MDksImp0aSI6IkppSFlFeHVlU1pSNUhwY2giLCJzdWIiOjI3LCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.dW9rsTQVLRMekTf30_biyjzEiVzlqRTT14H6iKrF1_0 Connection: keep-alive Content-Length: 195 Content-Type: application/json;charset=UTF-8 Host: 192.168.80.80 Origin: http://localhost:3000 Referer: http://localhost:3000/ Sessiontest: sessionTest User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
laravel5

2020/12/08 07:12

すいません、nuxt.js側で 下記のエラーが発生していました。 調べて見ると、使用できないヘッダーでCookieが含まれている様でした。 しかし、Laravel側でheadersからcookieが取得できない理由は以前不明です。 xhr.js?b50d:132 Refused to set unsafe header "Cookie" XMLHttpRequest でsetRequestHeader出来ないヘッダー リスト https://asnokaze.hatenablog.com/entry/20110530/1306720270
laravel5

2020/12/08 11:06

調べて見ると、headers情報はブラウザ側で自動的に設定されると記載されています。 なので、headersにcookieを強制的に入れてサーバー送信できない様です。 しかし、テスト環境、本番環境は、うまく動作しています。 ローカル環境のみ突然動かなくなっています。 XMLHttpRequest isn't allowed to set these headers, they are being set automatically by the browser. The reason is that by manipulating these headers you might be able to trick the server into accepting a second request through the same connection, one that wouldn't go through the usual security checks - that would be a security vulnerability in the browser. https://stackoverflow.com/questions/7210507/ajax-post-error-refused-to-set-unsafe-header-connection
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問