Laravel Веб-сокеты и Chrome атрибут SameSite` - PullRequest
5 голосов
/ 10 января 2020

Таким образом, есть много вопросов об этом же бизнесе сайта, но я не могу найти никаких ответов, когда дело доходит до 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
      }
    }
});

Согласно их документам , они используют библиотеку толкателя - но нет никаких признаков того, что она действительно попала на сайт толкателя. И мне не нужны никакие учетные данные, так как все они являются поддельными.

Проблема проста:

Повар ie, связанный с межсайтовым ресурсом на http://support.pusher.com/ был установлен без атрибута SameSite. В следующем выпуске Chrome файлы cookie будут доставляться только с межсайтовыми запросами, если для них установлены SameSite=None и Secure. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложения»> «Хранение»> «Файлы cookie» и получить более подробную информацию по https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.

. over стек переполнение.

I disableSats, и хотя да, веб-сокеты все еще работают и работают нормально, в конечном итоге chrome будет похоже на "nope". Поэтому я понятия не имею, является ли это эмитентом-толкачом, проблемой laravel websockets или чем-то другим.

Есть ли у кого-нибудь какие-либо идеи относительно того, что я мог бы сделать или попытаться сделать? I Я попытался установить forceTLS: true в вышеуказанном конфиге, и это, кажется, работает, но тогда веб-сокеты не будут подключаться.

Я беспокоюсь, что однажды мое приложение просто перестанет работать, так как мы зависим от веб-сокетов для много функциональных возможностей, и это одна из самых простых и лучших библиотек, которые не требуют дней исследований и настройки.

1 Ответ

3 голосов
/ 20 января 2020

Во-первых, мы должны понять рабочий процесс этой операции.

Вот пример;

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 эхо-сервер.

В вашем случае, наиболее вероятно, что он является отправителем. работает нормально (я давно пользуюсь их сервисом, никогда не видел проблем), если вы хотите отладить это. Вы можете использовать сервер redis и подключить laravel echo к redis (и он работает в вашей локальной сети, намного быстрее, чем pusher)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...