在网页发送请求
默认情况下,Egg在框架中内置了安全插件egg-security
,插件中针对post
请求做出了一些处理。
在AJAX请求中,默认配置下,token会被设置在Cookie中,在AJAX请求时,可以从Cookie中获取到token,放置到query、body或者header中发送给服务端:
使用jQuery:
var csrftoken = Cookies.get('csrfToken');
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader('x-csrf-token', csrftoken);
}
},
});
通过header传递CSRF token的字段可以在配置中改变:
// config/config.default.js
module.exports = {
security: {
csrf: {
headerName: 'x-csrf-token', // 通过 header 传递 CSRF token 的默认字段为 x-csrf-