我实际上正在开发一个 phoenix 应用程序,我需要在一些嵌入 iframe 的网站中进行渲染,我完成了逻辑编码,但我发现它只适用于 Firefox,当在 Chome 或 Opera 上使用它时,它以无限循环充电尝试渲染内容,抛出以下警告:
我试图通过像这样的额外选项来允许这一点,但没有成功。
@session_options [
store: :cookie,
key: "_analytics_key",
signing_salt: "BM3P8GYS",
extra: "SameSite=None;",
]
然后我发现在 Endpoint 的最后一个版本中,它有一个名为 same_site 的 cookie 的特定选项,所以我尝试了这样,但得到了相同的结果:
@session_options [
store: :cookie,
key: "_analytics_key",
signing_salt: "BM3P8GYS",
same_site: "None",
#extra: "SameSite=None;",
secure: true
]
一切似乎都有效,但我发现从端点上的 websocket 中删除 connect_info 自动解决了这个问题,就像这样:
# socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]]
socket "/live", Phoenix.LiveView.Socket, websocket: []
但这会影响诸如监护人之类的事情,我猜是一些安全问题,所以我一直在寻找一种仅在尝试在 iframe 上呈现页面时删除它的方法,我正在考虑使用插件来执行此操作,但我没有知道这对于这个特定部分是否可行,也许有人知道我可以在这里做些什么来完成我想要的事情?提前致谢!