【问题标题】:CSRF JS Metatag Creation w/ Thymeleaf使用 Thymeleaf 创建 CSRF JS 元标记
【发布时间】:2018-08-13 18:29:07
【问题描述】:

我不确定这是否可行,但我希望在整个网站使用的 javascript 文件中创建两个 CSRF 元标记(标题和令牌)。但是,我认为这是不可能的,因为百里香叶如何处理来自插值数据变量的数据。

我尝试使用以下代码创建 HTML 元标记元素:

var meta = document.createElement("meta");
meta.setAttribute("name", "_csrf");
meta.setAttribute("th:content", "_csrf.token")

这将创建具有所需值的必要元素(仅显示标记)。但是,当打印出令牌的值时,它会返回“_csrf.token”而不是实际的 csrf 值。我相信这是因为 thymeleaf 没有正确处理插值。

这些元标记必须手动添加到每个页面的 html 文件中,还是可以使用通用 javascript 文件动态创建?

谢谢!

【问题讨论】:

    标签: javascript thymeleaf csrf


    【解决方案1】:

    我建议使用 layout:dialect 创建一个您的所有页面都可以访问的模板。您可以将<meta /> 标签放在那里并在所有页面之间共享。

    如果您打算使用 JavaScript,则可以通过与您的页面相同的 spring 进程运行 JavaScript(如果您已为它正确设置了所有内容)。例如,像这样:

    @GetMapping("/your-javascript-name.js")
    public String deposit() {
        return "javscript/your-javascript-name";
    }
    

    这样你仍然可以在外部包含它:

    <script src="your-javascript-name.js"></script>
    

    在 javascript 中,你可以使用 Thymeleaf:

    var token = /*[[${_csrf.token}]]*/ '';
    
    var meta = document.createElement("meta");
    meta.setAttribute("name", "_csrf");
    meta.setAttribute("content", token);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2021-03-12
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2018-05-09
      相关资源
      最近更新 更多