![](/img/trans.png)
[英]How to automatically add X-CSRF-TOKEN with jQuery ajax request in Laravel
[英]How to handle X-CSRF-Token for jQuery POST in UI5?
我想使用jQuery POST方法来调用在Database.My xsaccess文件中进行一些修改的xsjs服务来阻止xsrf,所以我需要在我的控制器方法中处理它。
以下是我的控制器代码 -
var obj= {};
obj.name= "John";
obj.age= "abc@xyz.com";
obj.loc= "Minnesota";
jQuery.ajax({
url: "serviceTest.xsjs",
type: "GET",
data: JSON.stringify(obj),
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRF-Token", "Fetch");
},
success: function(responseToken, textStatus, XMLHttpRequest) {
var token = XMLHttpRequest.getResponseHeader('X-CSRF-Token');
console.log("token = " +token);
jQuery.ajax({
url: "serviceTest.xsjs",
type: "POST",
data: JSON.stringify(obj),
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRF-Token", token);
},
success : function(response) {
// will be called once the xsjs file sends a
response
console.log(response);
},
error : function(e) {
// will be called in case of any errors:
var errMsg = e.responseText
console.log(e);
}
});
},
这是我的xsjs代码 -
var csrf_token = $.request.headers.get("X-CSRF-Token");
if(csrf_token === "Fetch") {
var content = $.request.body.asString();
var args = $.parseJSON(content);
var xsName= args.name;
var xsemail= args.email;
var xsLoc= args.loc;
//then execute DML statement by passing these 3 parameters as arguments.
catch (error) {
$.response.setBody(content);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
我无法进行更新并获得错误Err 500 - 内部服务器错误。 任何建议都会非常有帮助
编辑:
如果我忘记了令牌,那么我得到403拒绝访问被拒绝(“CSRF令牌验证失败”)而不是500内部。 所以我觉得你的服务有问题
您可以将您的X-CSRF-Token添加为POST请求的标头,并在启动POST之前设置您的ajax请求。
$.ajaxSetup({
headers: {
'X-CSRF-Token': token
}
});
jQuery.ajax({
url: "serviceTest.xsjs",
type: "POST",
data: JSON.stringify(obj),
beforeSend: function(xhr) {
否则将其添加到每个POST请求。
jQuery.ajax({
url: "serviceTest.xsjs",
type: "POST",
data: JSON.stringify(obj),
headers: {
'X-CSRF-Token': token
},
beforeSend: function(xhr) {
使用beforeSend事件的方式也应该有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.