Laravel Web 套接字和 Chrome `SameSite` 属性
Laravel Web-sockets and Chrome `SameSite` attribute
所以关于这个 sameSite 业务有很多问题,但是当涉及到 Laravel Websockets 时我找不到任何答案。他们的文档中没有关于此的内容。
所以我想我会在这里问一下,看看你们有什么想法。
考虑以下配置:
import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: window.location.hostname,
wsPort: 6001,
wssPort: 6001,
disabledStats: true,
encrypted: false,
enabledTransports: ['ws', 'wss'],
namespace: 'App',
auth: {
headers: {
'X-CSRF-TOKEN': token.content
}
}
});
根据他们的 docs,他们使用 pusher 库 - 但没有迹象表明它实际上访问了 pusher 网站。而且我不需要任何推送凭据,因为它们都是伪造的。
问题很简单:
A cookie associated with a cross-site resource at http://support.pusher.com/ was set without the SameSite
attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite=None
and Secure
. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
全部堆栈溢出。
我 disableSats
虽然是的,websockets 仍然 运行 并且工作正常,最终 chrome 会像 "nope"。所以我不知道这是推送器发行者,laravel websockets 问题还是什么。
有人知道我可以做什么或尝试做什么吗?我已经尝试在上面的配置中设置 forceTLS: true
,这似乎有效 -但是网络套接字将无法连接。
我担心有一天我的应用程序会停止工作,因为我们依赖 websockets 来实现很多功能,这是最简单、最好的库之一,不需要花费数天的时间研究和设置.
首先我们要了解这个操作的工作流程。
这是例子;
Your laravel backend
▼
[pub/sub service (can be redis pusher etc..)]
▼
laravel echo server
▼
websocket client ( mostly laravel echo client)
在客户端
Websocket (mostly laravel echo client)
▼
Laravel echo server
▼
http request to laravel backend
如果您试图找到从客户端到推送网站的跟踪,您的客户端不可能与 laravel 回显服务器做出反应。
如果你想跟踪 laravel 回显服务器到推送器,那么你必须调试 laravel 回显服务器。
在你的情况下,如果你想调试它,很可能 pusher 工作正常(我使用他们的服务有一段时间从未见过问题)。您可以使用 redis 服务器并将 laravel 回显连接到 redis(及其在您的本地网络上工作,比 pusher 快得多)
希望对您有所帮助。
所以关于这个 sameSite 业务有很多问题,但是当涉及到 Laravel Websockets 时我找不到任何答案。他们的文档中没有关于此的内容。
所以我想我会在这里问一下,看看你们有什么想法。
考虑以下配置:
import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: window.location.hostname,
wsPort: 6001,
wssPort: 6001,
disabledStats: true,
encrypted: false,
enabledTransports: ['ws', 'wss'],
namespace: 'App',
auth: {
headers: {
'X-CSRF-TOKEN': token.content
}
}
});
根据他们的 docs,他们使用 pusher 库 - 但没有迹象表明它实际上访问了 pusher 网站。而且我不需要任何推送凭据,因为它们都是伪造的。
问题很简单:
A cookie associated with a cross-site resource at http://support.pusher.com/ was set without the
SameSite
attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set withSameSite=None
andSecure
. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
全部堆栈溢出。
我 disableSats
虽然是的,websockets 仍然 运行 并且工作正常,最终 chrome 会像 "nope"。所以我不知道这是推送器发行者,laravel websockets 问题还是什么。
有人知道我可以做什么或尝试做什么吗?我已经尝试在上面的配置中设置 forceTLS: true
,这似乎有效 -但是网络套接字将无法连接。
我担心有一天我的应用程序会停止工作,因为我们依赖 websockets 来实现很多功能,这是最简单、最好的库之一,不需要花费数天的时间研究和设置.
首先我们要了解这个操作的工作流程。
这是例子;
Your laravel backend
▼
[pub/sub service (can be redis pusher etc..)]
▼
laravel echo server
▼
websocket client ( mostly laravel echo client)
在客户端
Websocket (mostly laravel echo client)
▼
Laravel echo server
▼
http request to laravel backend
如果您试图找到从客户端到推送网站的跟踪,您的客户端不可能与 laravel 回显服务器做出反应。
如果你想跟踪 laravel 回显服务器到推送器,那么你必须调试 laravel 回显服务器。
在你的情况下,如果你想调试它,很可能 pusher 工作正常(我使用他们的服务有一段时间从未见过问题)。您可以使用 redis 服务器并将 laravel 回显连接到 redis(及其在您的本地网络上工作,比 pusher 快得多)
希望对您有所帮助。