代码之家  ›  专栏  ›  技术社区  ›  Mtxz

全页缓存(FastCGI)+CSRF令牌(服务器端加载SSI、ESI、Ajax)+Nginx

  •  0
  • Mtxz  · 技术社区  · 7 年前

    第一:我看了很多这样的帖子,没有找到满意的答案。我希望我没有错过答案。

    :

    • 我正在运行一个Laravel应用程序(PHP 7.3)
    • 我使用FastCGI(php fpm)和Nginx实现了一个完整的页面缓存
    • 它工作得很好,但是像csrf令牌这样的动态东西不会被刷新
    • 我的目标:获得一个完整的缓存页面,但是使用正确的CSRF令牌进行用户会话

    我试过的 :

    • 我钻研过 Nginx SSI csrf_token()
      • 我试过了 file 和 virtual .php 文件和API路由。它在我的刀片模板中从未工作过。(奇怪的是,据我所知,它基于响应内容类型,如text/html)。即使是最基本的 <!--#echo var="DATE_LOCAL" --> 不工作,被Nginx剥离(不响应)。
      • 相同的测试 .html 文件 工作
      • 似乎可以使用Varnish作为代理来让ESI工作。但这对我们的基础设施有很多改变。

    • 最后,我能想到的唯一解决方案是让Ajax API请求onLoad来获取令牌。在每次加载页面时。这似乎不是一个很好的方法,但是,我没有选择(是吗?)。
    • 也许我可以让Nginx认为我的根index.php是HTML,从而让SSI工作?( inspiration )
    • SSI/ESI似乎正是我所需要的。但这似乎也是一项“古老”的技术。不过,我还是找不到真正的替代品。

    问题 :

    • 为ESI安装所有东西值吗?
    • Ajax是我唯一的解决方案吗?
    • 还有什么我会错过的吗?

    谢谢。我知道也有类似的问题,但我找不到确切的答案。

    0 回复  |  直到 7 年前