JHipster 和 AngularJS:如何正确处理 AJAX 请求中的 CSRF?
JHipster and AngularJS: How to deal with the CSRF in AJAX requests properly?
我必须为 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})
这会产生错误。但是,然后我重新加载页面,一切都很顺利。然后我 grep'ed 来源并发现在 auth.session.service.js 中你使用以下代码来获取 CSRF 令牌:
$http.get('api/account');
我将这段代码添加到我的网络应用程序中,现在效果很好。
但是我想知道是否有更好的解决方案(避免额外的请求?)。
我怀疑这个问题太宽泛了,但想不出如何让它变得简单。
默认情况下,JHipster 正确处理 CSRF,在服务器端使用 Spring 安全性,在客户端使用 AngularJS。
正如您所说,您只是从 JHipster 复制了一些代码:您真的在使用 JHipster,还是只是 copy/pasting 客户端代码?如果您没有正确配置服务器,这将不起作用,这就是我们的工作所在。
通常您不必 copy/paste AngularJS 配置,我们会为您完成所有这些。
我必须为 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})
这会产生错误。但是,然后我重新加载页面,一切都很顺利。然后我 grep'ed 来源并发现在 auth.session.service.js 中你使用以下代码来获取 CSRF 令牌:
$http.get('api/account');
我将这段代码添加到我的网络应用程序中,现在效果很好。
但是我想知道是否有更好的解决方案(避免额外的请求?)。 我怀疑这个问题太宽泛了,但想不出如何让它变得简单。
默认情况下,JHipster 正确处理 CSRF,在服务器端使用 Spring 安全性,在客户端使用 AngularJS。
正如您所说,您只是从 JHipster 复制了一些代码:您真的在使用 JHipster,还是只是 copy/pasting 客户端代码?如果您没有正确配置服务器,这将不起作用,这就是我们的工作所在。
通常您不必 copy/paste AngularJS 配置,我们会为您完成所有这些。