概要
チャット機能をつけるためにLaravel-echo-server + Redisにてソケット通信を行おうとしたところSameSiteの設定でIssueが出ていた。
無事動いたので備忘録。
チャット機能は以下を参考
Laravel Broadcasting (Laravel Echo)を試してみる
環境
Laravel Framework 6.20.32
MAMP 6.4
PHP 7.4.6
やったこと
- localhostのSSL設定
- laravelのsame_siteの設定
- laravel-echo-serverのSSL設定
- 接続先をhttpsへ変更
localhostのSSL設定
以下のサイトを参考。
他のやり方だと何故かうまく行かなかった。
ローカル開発環境にSSLを設定できるmkcertがめちゃくちゃ便利だった
laravelのsame_siteの設定
{ルート}/session.phpで設定
session.php
'same_site' => 'lax',
noneに設定すると怒られたのでlaxにしました。
Mark cross-site cookies as Secure to allow setting them in cross-site contexts
laravel-echo-serverのSSL設定
laravel-echo-server.jsonをSSLに対応。
認証はMAMPの時に作成したもの。
laravel-echo-server.json
"port": "6001",
"protocol": "https",
"socketio": {},
"secureOptions": 67108864,
"sslCertPath": "/Applications/MAMP/conf/apache/keys/localhost.pem",
"sslKeyPath": "/Applications/MAMP/conf/apache/keys/localhost-key.pem",
忘れずにサーバーを再起動。
laravel-echo-server start
接続先をhttpsへ変更
laravel-echoの設定を変更
bootstrap.js
window.Echo = new Echo({
broadcaster: 'socket.io',
host: 'https://' + window.location.hostname + ':6001'
});
忘れずにjsを更新。
npm run dev
おわり
これでとりあえずIssuesはなくなりました。