我有一个Spring-Boot项目,Velocity模板配置完全正常......
在我的速度视图中,我有以下内容;
<head>
<!-- some other meta tags here -->
<meta name="csrf-token" content="$!_csrf.token">
</head>
这是我在chrome中检查时输出的样子;
<meta name="csrf-token" content="$!_csrf.token">
然而,在同一页面上,我有一个看起来像这样的表格;
<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>
浏览器检查显示以下内容;
<input type="hidden" name="_csrf" value="69799b81-7c45-4042-9269-3a83769df682" data-header="X-CSRF-TOKEN">
很明显, _csrf 属性在表单正文中注入并解析,但不在 head 元标记内。
问题: 什么会导致这样的事情?
答案 0 :(得分:0)
好的,我最终发现这里发生的事情是由于一个非常简单的疏忽造成的。
我在单独的模板中有<head>...</head>
部分,并将其包含在其他模板中,如下所示;
#include("/pages/common/header.vm")
嗯,对于速度的用户来说,很明显,上面只是按原样包含模板(即所有内容都被翻译为文本),并且不会解析在其中声明的任何速度上下文属性。所以我只需将其更改为以下
#parse("/pages/common/header.vm")
这可确保正确解析header.vm
模板中声明的任何速度属性,并相应地读取值。
我最初会删除一个问题,认为它首先不应该被问到,但我意识到,这是 StackOverflow ,更好只是指出错误并为别人节省一些时间。从本质上讲,让世界变得更美好...干杯!