我必须为JHipster创建另一个简单的html页面,它必须执行AJAX请求。它包含一个很小的AngularJS应用程序,所以我复制了一些JHipster代码:
var app = angular.module('app', ['dep1', 'dep2', 'dep3']);
app.config(function ($httpProvider) {
$httpProvider.defaults.xsrfCookieName = 'CSRF-TOKEN';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRF-TOKEN';
});
然后我执行这样的HTTP请求:
$http.post("/controller/execute", {code: ourCode})
这会产生错误。然而,然后我重新加载页面,一切都像魅力。然后我查看了源代码,发现在auth.session.service.js中使用以下代码来获取CSRF令牌:
$http.get('api/account');
我已将此片段添加到我的webapp中,现在效果很好。
但是我想知道是否有更好的解决方案(避免额外请求?)。 我怀疑这个问题太宽泛了,但不能想到如何简单化。
答案 0 :(得分:0)
默认情况下,JHipster正确处理CSRF,使用服务器端的Spring Security和客户端的AngularJS。
正如你所说,你刚从JHipster复制了一些代码:你真的使用JHipster,还是只复制/粘贴客户端代码?如果您没有正确配置服务器,这将无法正常工作。
通常您不必复制/粘贴AngularJS配置,我们会为您完成所有这些。