layui upload如何使用csrf 400 请求报错  -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

layui upload如何使用csrf 400 请求报错 

2020-05-29 16:30:43 561 1

在使用layui upload的时候,被csrf拦截,各位大大侠们,这个要怎么解决?
一|页面代码

<!--  security csrf  --> <meta name="_csrf" th:content="${_csrf.token}"/> <!-- default header name is X-CSRF-TOKEN --> <meta name="_csrf_header" th:content="${_csrf.headerName}"/>

<!-- layui -->
<link type="text/css" rel="stylesheet" href="../../public/front/js/lib/layui/css/layui.css"
      th:href="@{/front/js/lib/layui/css/layui.css}"/>
<script type="text/javascript" src="../../public/front/js/lib/layui/layui.js"
        th:src="@{/front/js/lib/layui/layui.js}"></script>

<!-- ajax security -->
<script type="text/javascript">
    $(function () {
        var token = $("meta[name='_csrf']").attr("content");
        var header = $("meta[name='_csrf_header']").attr("content");
        $(document).ajaxSend(function (e, xhr, options) {
            xhr.setRequestHeader(header, token);
        });
    });

    layui.use('upload', function () {
        layui.upload({
            url: "file/upload/single.htm"
            , success: function (res) {
                console.log(res); //上传成功返回值,必须为json格式
            }
        });
    });
</script>

<div class="layui-box layui-upload-button"> <form target="layui-upload-iframe" method="post" key="set-mine" enctype="multipart/form-data" th:action="@{/file/upload/single.htm}"> <input type="file" name="file" class="layui-upload-file"></form> <span class="layui-upload-icon"><i class="layui-icon"></i>上传图片</span> </div>

二|下面是正常用上传文件的请求
三|用layui upload上传文件的请求

_csrf这个参数没传过去,导致直接都被拦截了,这个要怎么搞呀,各位大大侠们?
layui的里提问的地址
http://fly.layui.com/jie/5228.html

取消 提交回答
全部回答(1)
  • kun坤
    2020-05-29 16:30:51

    CSRF 主流防御方式是在后端生成表单的时候生成一串随机 token ,内置到表单里成为一个字段,同时,将此串 token 置入 session 中。每次表单提交到后端时都会检查这两个值是否一致,以此来判断此次表单提交是否是可信的。提交过一次之后,如果这个页面没有生成 CSRF token ,那么 token 将会被清空,如果有新的需求,那么 token 会被更新。
    //注:以上为网上找的,个人觉得你可以将token放到表单中,完全不需要搞到头部去,这样的话还需要用JS处理,个人建议,不过csrf倒是第一次听说,好尴尬 ######回复 @_冢彧 : 加上csrf呗,等待大神拯救你吧######现在这边主要的问题是用layui upload上传的时候,访问服务器的时候没有把 _csrf这个参数传过去,你可以看第一张图和第二张图里面的,第二张图请求的时候少了_csrf参数,所以请求直接被拦截了…………不知道有什么办法可以解决///######那个JS处理的是ajax提交的,不然ajax提交会一直被拦截,如果不跨站的话,表单里面你提交的时候是会自动加那个_csrf参数传过去的,只有跨站的才在里面加<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>######两种方法 1:http.csrf().disable() 2:在ajax的提交参数里加上csrf的数据 $.ajax({   //...   data: {     "${_csrf.parameterName}": "${_csrf.token}"   }   //... })

    0 0
相关问答

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157675浏览量 回答数 145

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147223浏览量 回答数 22

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146032浏览量 回答数 31

33

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 280375浏览量 回答数 33

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 136929浏览量 回答数 42

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 259817浏览量 回答数 38

294

回答

Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)

qilu 2014-09-25 13:26:50 434553浏览量 回答数 294

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 305614浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 475556浏览量 回答数 24

13

回答

游戏云精彩帖汇总

nono20011908 2014-08-22 11:00:12 203959浏览量 回答数 13
+关注
0
文章
13401
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载