【问题标题】:Laravel Web-sockets and Chrome `SameSite` attributeLaravel Web-sockets 和 Chrome `SameSite` 属性
【发布时间】:2020-04-28 12:17:43
【问题描述】:

所以关于这个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 网站。而且我不需要任何推送者凭据,因为这些都是伪造的。

问题很简单:

在没有SameSite 属性的情况下设置了与http://support.pusher.com/ 的跨站点资源关联的cookie。未来版本的 Chrome 将仅通过设置为 SameSite=NoneSecure 的跨站点请求传递 cookie。您可以在开发人员工具中的 Application>Storage>Cookies 下查看 cookie,并在 https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032 上查看更多详细信息。

这都是堆栈溢出。

disableSats 虽然是的,websockets 仍然可以正常运行,但最终 chrome 会像“不”一样。所以我不知道这是一个推送者问题,还是 laravel websockets 问题。

有人对我可以做什么或尝试做什么有任何想法吗?我已经尝试在上述配置中设置 forceTLS: true 并且这似乎有效 - 但是网络套接字不会连接。

我担心有一天我的应用程序会停止工作,因为我们依赖 websockets 来提供很多功能,这是目前最简单、最好的库之一,不需要数天的研究和设置。

【问题讨论】:

  • 您可以在隐身会话中尝试此操作,以确保您不会先访问任何 Pusher 网站吗?对我来说,support.pusher.com 的 cookie 听起来您可能已经访问了浏览器中的支持论坛,并且那里有一个 cookie 仍在发送到任何 pusher.com 域的请求。
  • 隐身模式没有按规定显示警告 I. 上面链接的问题。我从页面中删除了所有 cookie,重新加载后仍然收到警告 @rowan_m

标签: php laravel websocket pusher pusher-js


【解决方案1】:

首先,我们必须了解此操作的工作流程。

这里是例子;

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 echo 服务器做出反应。

如果你想追踪 laravel echo server 到 pusher,那么你必须调试 laravel echo server。

在您的情况下,如果您想调试它,很可能推送器工作正常(我使用他们的服务有一段时间从未见过问题)。您可以使用 redis 服务器并将 laravel echo 连接到 redis(它可以在您的本地网络上运行,比 pusher 快得多)

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 2020-06-05
    • 1970-01-01
    • 2020-02-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    相关资源
    最近更新 更多