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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

Laravel

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Q&A

解決済

1回答

2132閲覧

セッションIDがクッキーに書き込まれない

sagitarou

総合スコア7

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

Laravel

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

0グッド

1クリップ

投稿2020/09/03 00:17

編集2020/09/04 11:05

前提・実現したいこと

ブラウザからアクセスがあったときに、laravelでセッションIDを発行してcookieに書き込む処理を行いたい。ですが、実行しても書き込まれません

発生している問題・エラーメッセージ

cookieに書き込まれない

該当のソースコード

angular

1loginuser(email: string, password: string): Observable<any> { 2 var array: string[] = [email, password]; 3 return this.http.post<any>(this.URL + 'login', array); 4 }

laravel

1Route::post('/login','UserController@login');

laravel

1public function login(Request $request) 2 { 3 $session_id = Session::getId(); 4 Cookie::queue('test',$session_id,43800); 5 }

#試したこと、考えたこと
・ブラウザの設定の見直し
・laravelだけの時にブラウザからリクエストを送るとどうなるかやってみたけどcookieには記録されなかった
・angularからのリクエストの出し方が悪いと思ったけどlaravelだけの時にも'test'という名前のセッションIDは記録されなかったのであまり関係ないのかなと。

・本当にセッションIDは発行されているのか確かめるためのデバッグは行った。発行はされているっぽい

質問

httpリクエストの出し方が悪いのでしょうか?
ですが、ブラウザで確認した際のステートは200 OK だったのでエラーもはかずに詰まってしまったので助言をいただきたいです。

#具体的な実行の流れ
1,ブラウザから情報を持たせてボタン押したらリクエストが送信するようにしていた。
2,実際にリクエストを送った
3,書き込まれない
4,次の処理は走っている

開発者ツールの画面です

###バージョンとツール
Laravel 7.22.4
Angular CLI: 10.0.4
ブラウザ:chrome

#追加の情報
laravel単体で動かした時に入っていたcookieデータはangularでのブラウザでも表示されていました

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

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

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

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

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

yoorwm

2020/09/03 00:51

どのように確認して「実行しても書き込まれません」と判断しましたか?
sagitarou

2020/09/03 01:01

ブラウザから情報を持たせてボタン押したらリクエストが送信されて質問のコードが走るようにしていたのですが、実際にリクエストを送っても書き込まれず、次の処理は走っていたので書き込まれていないと判断しました
guest

回答1

0

ベストアンサー

.env ファイルの SESSION_DRIVER の値がちゃんと、cookie になっているのですか?
そうなっているのに、書き込まれない のであれば、php artisan optimize:clear を実行してみてください。

投稿2020/09/03 02:59

phper.k

総合スコア3923

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

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

sagitarou

2020/09/03 07:48

回答ありがとうございます。 提示していただいた方法を試したのですが、書き込まれなかったです。 あと、laravelのドキュメントに書いてあったので、'''config/session.php'''の'''driver'''のところも'''cookie'''に書き換えました
phper.k

2020/09/03 07:51 編集

そう書かれてもですね・・・ ・提示していただいた方法を試した → 正しく行ったかどうかわからない ・'''config/session.php'''の'''driver'''のところも'''cookie'''に書き換え →どう書いたのかわからない ・書き込まれなかった →確認の仕方が間違っているのかも? 回答のしようがない
sagitarou

2020/09/03 08:04

失礼いたしました。 .envファイルの SESSION_DRIVER=file から SESSION_DRIVER=cookie に変更(実行するも書き込まれず) php artisan optimize:clearコマンドやる [Compiled views cleared! Application cache cleared! Route cache cleared! Configuration cache cleared! Compiled services and packages files removed! Caches cleared successfully!] と出たのでコマンドはうまくいってると推察。でも書き込まれず。 '''config/session.php'''の 'driver' => env('SESSION_DRIVER', 'file')を'driver' => env('SESSION_DRIVER', 'cookie')への変更 こんな感じです。見にくくて申し訳ないです
phper.k

2020/09/03 08:06

'driver' => env('SESSION_DRIVER', 'file')を'driver' => env('SESSION_DRIVER', 'cookie')への変更 これはやらなくていい
phper.k

2020/09/03 08:07 編集

クッキーに書き込まれる処理はどう行ったのか? クッキーに書き込まれたかどうかをどのようにして確認したのかを追記してください。
sagitarou

2020/09/03 08:12

cookieに書き込まれる処理は  Cookie::queue('test',$session_id,4380); この一文の処理のみです cookieに書き込まれたかどうかの確認はchromeの開発者ツールのApplication内のcookiesで行っています
phper.k

2020/09/03 08:15

そもそもなんですが、Cokkieは書き込んだその瞬間のアクセスではなく、ページを再読み込みしたときに初めて確認できるものですが、その認識はもっているでしょうか?
phper.k

2020/09/03 08:16 編集

後確認の質問です。 ログイン機能は利用していますか?
sagitarou

2020/09/03 08:22

その認識は持っています。 laravelで使えるログイン機能でしょうか? 今回はフロント側で別フレームワークを利用しているのでログイン機能は使っていないです。
phper.k

2020/09/03 08:31

> chromeの開発者ツールのApplication内のcookiesで行っています スクリーンショットを貼り付けてください。
sagitarou

2020/09/03 08:42

質問に追記します
phper.k

2020/09/03 08:46 編集

確認しました。 Cookie書き込みの処理が走ってないんじゃないかと疑ってます。 つまり、書き込みの処理が実行されていないということです。 ちなみに、手元の環境で試したところちゃんと確認できました
sagitarou

2020/09/03 08:55 編集

なるほど。ではブラウザの設定をを見てみた方がいいのかも知れないのかと考えました
phper.k

2020/09/03 08:56

そうかもしれませんね。 通っていないとも通っているともそう断定できる情報は私にはありませんので。
sagitarou

2020/09/03 09:04

ありがとうございます。 ブラウザでの設定で変えるべきところは見当たらなかったですが、もう少し探ってみます
sagitarou

2020/09/04 00:08 編集

一度ベストアンサーにさせていただいたのですが、別の視点での問題があるかもと思ったので、再度質問中にさせていただくためにベストアンサーを外してしまいました。誠に申し訳ありません
phper.k

2020/09/04 00:08

この質問で解決できない理由は、次の質問で分かった。 anglar からrest で laravel にアクセスしているという大事な情報出していないことが原因です。 それは次の質問で解決してください。
sagitarou

2020/09/04 00:26

大事な情報だとは知らずに失礼いたしました。 何度も対応いただきありがとうございました。
phper.k

2020/09/04 00:29

anglar から laravel にクッキー情報を連携する方法を調べてください。 anglar は自分は使ったことないので、お手伝いはここまでです。
sagitarou

2020/09/04 02:52

本当に本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問