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 快得多)

希望对您有所帮助。