Luminus web项目中让ajax请求和anti-forgery共存

Luminus web项目默认会启用anti-forgery特性以防止跨站攻击,极大增强了安全性。但是也为一些异步发生(不是来源于服务端的输出页面)的请求(ajax)带来了不便。

可以如下解决之:

若你的网页模板是经由selmer layout的,它会自动带上这个anti-forgery token。你便可以在js中添加如下代码

var csrfToken = "{{csrf-token}}";
$.ajaxPrefilter(function (options, originalOptions, request) {
if (csrfToken) {
request.setRequestHeader('X-CSRF-Token', csrfToken);
}
});

Luminus框架的anti-forgery middleware也可以接受http header中的”X-CSRF-Token”指定的token。
这样子就把token给带到服务端了。让ajax请求顺利发出。