繁体   English   中英

如何在UI5中处理jQuery POST的X-CSRF-Token?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM