在我的应用程序中,我使用Ext JS 5.1同时拥有JSP和JS。我需要对我的应用程序应用spring csrf保护。 在Jsp我能够添加如下:
<body>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}">
</body>
但我不知道如何在.js文件中执行此操作?我是否也为ext js声明了Meta标签?我需要将csrf标记应用于每个ajax请求。
为了突出显示,我扫描了许多网站,但没有得到任何正确的解释或工作示例。如何在Ext js .js文件的ajax调用中添加csrf?
答案 0 :(得分:-1)
我能够做到如下。将以下代码段添加到ext js应用程序的app.js或Application.js。
Ext.Ajax.on('beforerequest', function(conn, options) {
var x = document.getElementsByTagName("META");
var token = "";
var headerVal = "";
var i;
for (i = 0; i < x.length; i++) {
if (x[i].name == "_csrf") {
token = x[i].content;
} else if (x[i].name == "_csrf_header") {
headerVal = x[i].content;
}
}
Ext.Ajax.setDefaultHeaders({
headerVal: token
});
});
OR
Ext.Ajax.on('beforerequest', function(conn, options) {
var x = document.getElementsByTagName("META");
var token = "";
var headerVal = "";
var i;
for (i = 0; i < x.length; i++) {
if (x[i].name == "_csrf")
{
token = x[i].content;
}
}
// Ext.Ajax.defaultHeaders = Ext.apply(Ext.Ajax.defaultHeaders || {}, { headerVal : token });
Ext.Ajax.setDefaultHeaders({
'X-CSRF-TOKEN':token
});
});