使用带有标题重写的ngrok时无法创建cookie

mpe*_*rin 6 cookies session webhooks ngrok

我使用docker作为我的本地开发环境,并使用dinghy-http-proxy添加新TLD .docker来将请求映射到nginx-proxy容器.

我的网站通常通过http://devel.domain.com.docker等URL 访问.

我想在访问远程webhook时使用ngrok进行本地开发.

我用命令成功启动了ngrok:

ngrok http -host-header=rewrite devel.domain.com.docker 80
Run Code Online (Sandbox Code Playgroud)

我可以通过地址http://randomsubdomain.ngrok.io访问我的Web应用程序的登录表单.

但是,我无法登录,因为看起来无法设置cookie会话.

实际上,尝试为域设置cookie会话,devel.domain.com.docker但是由于我们randomsubdomain.ngrok.io在浏览器中使用它们,出于安全原因它们被阻止.

我该如何绕过这个问题?我在配置中遗漏了什么吗?ngrok是否是我想要实现的目标的合适工具?

mpe*_*rin 11

直接询问ngrok.io支持并得到这个答案:

不,你没有遗漏任何东西,这只是重写主机头的一个不幸的副作用.主机头重写仅适用于某些应用程序,因为这样的复杂性(以及其他涉及javascript和跨源的等).如果可能,重新配置您的网站以接受ngrok.io主机标头总是好得多.

但是,我通过检查请求是否包含x-original-host域的头部来找到解决方案ngrok.io,然后我改变会话机制(在PHP中session_set_cookie_params)以使用x-original-host域.

  • 更多见解:我最终遇到了更多麻烦,并且意识到它在Chrome浏览器中不起作用,但确实在Firefox中有效!我向Ngrok询问了这个问题,Alan说道:"是的,我认为这是一个镀铬安全设置吗?但是我从来没有找到合适的标志来关闭它.使它在chrome中工作的正确方法是改变:domain = .ngrok.io到domain = mydomain.ngrok.io - 我意识到我正在使用Rails并且我有一个选项域:所有在我的cookie设置中.我在开发环境中删除了它,它现在完美运行! (2认同)
  • 早些时候,ngrok 在我的 Rails 应用程序的会话存储配置中使用 `domain: all` 设置为我工作。但最近我在 ngrok 和子域方面遇到了类似的问题。@PeterP 的上述评论对我有帮助。我现在必须为我的本地测试设置 `domain: 'mydomain.ngrok.io'` 而不是 `:all`。 (2认同)