提问者:小点点

为什么"_csrf"属性没有在spring-boot速度视图<head>标签内解析?


我有一个带有Velocity模板的Spring Boot项目,所有配置和工作正常…

在我的速度视图中,我有以下内容;

<head>
    <!-- some other meta tags here -->

    <meta name="csrf-token" content="$!_csrf.token">
</head>

这是我在chrome中检查时输出的样子;

然而,在同一页上,我有一个看起来像这样的表格;

<form method="post" action="/post/to/wherever">
    <input type="hidden" id="csrf" name="$!_csrf.parameterName" value="$!_csrf.token" data-header="$!_csrf.headerName"/>

    <!-- other fields here -->

</form>

并且浏览器检查显示如下;

所以很明显,_csrf属性在表单主体中被注入和解析,而不是在head元标记中。

问:什么会导致这样的事情?


共1个答案

匿名用户

好吧,我最终发现这里发生的事情是由于一个非常简单的疏忽。

我有<代码>

#include("/pages/common/header.vm")

好吧,对于速度的用户来说,很明显,上面只包括模板原样(即所有内容都翻译为文本),并且不会解析其中声明的任何速度上下文属性。所以我只需要将其更改为以下内容

#parse("/pages/common/header.vm")

这可确保适当解析header. vm模板中声明的任何速度属性并相应地读取值。

我最初打算删除这个问题,认为一开始就不应该问这个问题,但我意识到,嗯,这是StackOverflow,最好只是指出错误并为其他人节省一些时间。本质上,让世界对每个人来说都变得更美好…干杯!