php csrf问题,一个请求生成一个csrf key token,但是界面用了两个POST?
本文介绍了php csrf问题,一个请求生成一个csrf key token,但是界面用了两个POST?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
登录和注册放在一起了,但是一个请求只有一份csrf的key和token,这里会有两个POST,那这个怎么办呢?
我想到的是,分开或者一个成功后刷新页面
解决方案
没关系的呀,审核的csrf_token 都是session给的,我懂了,您的csrf_token
是 放表单里的对吧,您可以放在meta
标签里呀,通过ajax
提交表单。或者甩在form
外面每次异步提交就无所谓了,渲染视图的时候放在meta
标签里或者丢出去,异步提交的时候抓回来丢到后端就可以了
$.request('post','/reg',{});
$.extend({
/**
* $.ajax请求的封装
*
* @usage return $.request("post", url, {}).done(function(responce) {}).fail(function() {});
* @usage return $.request("post", url, null).then(function(responce) {});
*
* @param {[type]} method [POST/GET]
* @param {[type]} url [请求URL]
* @param {[type]} data [传递的数据]
* @param {[type]} userOpts [自定义参数: {headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}}]
*
* @return {[type]} [description]
*/
request: function(method, url, data, userOpts) {
var defer, options;
defer = $.Deferred();
options = $.extend({
method: method,
url: url,
dataType: "json",
async: false,
data: data,
timeout: 3000,
cache: false,
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') ? $('meta[name="csrf-token"]').attr('content') : ''},
beforeSend: function(msg) {
// 发送前的调试
}
}, userOpts);
$.ajax(options).done(function(data, textStatus, jqXHR) {
//return defer[(data.error ? "reject" : "resolve")](data);
return defer[(data.error ? "reject" : "resolve")](eval(data));
}).fail(function(jqXHR) {
window._hmt && window._hmt.push(['_trackEvent', 'AJAX_REQUEST_ERROR', 'error']);
return defer.reject();
});
return defer.promise();
}
});
这篇关于php csrf问题,一个请求生成一个csrf key token,但是界面用了两个POST?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文