agrinman / agrinman/tunnelto

Unable to proxy websockets?

未关闭
#63 3 条评论 3 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Rust
星标
7.1k
派生
546
PR 合并指标
30 天内没有已合并 PR

描述

I'm trying to use Phoenix LiveView over tunnelto. Everything works just fine without proxy or when using ngrok.
With tunnelto I get:

```
[info] Sent 200 in 2ms
[info] CONNECTED TO Phoenix.LiveView.Socket in 25µs
Transport: :websocket
Serializer: Phoenix.Socket.V2.JSONSerializer
Parameters: %{...}
[debug] LiveView session was misconfigured or the user token is outdated.

1) Ensure your session configuration in your endpoint is in a module attribute:

@session_options [
...
]

2) Change the `plug Plug.Session` to use said attribute:

plug Plug.Session, @session_options

3) Also pass the `@session_options` to your LiveView socket:

socket "/live", Phoenix.LiveView.Socket,
websocket: [connect_info: [session: @session_options]]

4) Ensure the `protect_from_forgery` plug is in your router pipeline:

plug :protect_from_forgery

5) Define the CSRF meta tag inside the `` tag in your layout:

<%= csrf_meta_tag() %>

6) Pass it forward in your app.js:

let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content");
let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}});
```

This happens in all browsers.
Standard HTTP requests are proxies just fine.
tunnelto version is 0.1.18.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。