RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1175173
Accepted
wq55
wq55
Asked:2020-09-07 17:16:06 +0000 UTC2020-09-07 17:16:06 +0000 UTC 2020-09-07 17:16:06 +0000 UTC

HTTP 状态 403 - 在请求参数“_csrf”或标头“X-CSRF-TOKEN”上发现无效的 CSRF 令牌“null”。加载 xml 时出错

  • 772

加载 xml 文件时,它会给出错误 - HTTP 状态 403 - 在请求参数“_csrf”或标头“X-CSRF-TOKEN”上发现无效的 CSRF 令牌“null”。添加了一个功能。

小.jsp

<br>

 <div id="dialog-message" title="Процедура загрузки">
  <p>
    <span class="ui-icon ui-icon-circle-check" style="float:left; margin:0 7px 50px 0;"></span>
    Процедура загрузки
  </p>
  <p>
    <div class="container">
    <h2>Загрузить</h2>
    <hr>
    <!-- File Upload From -->
    <form name ="submit_file" action="fileUpload_hotcall" method="post" enctype="multipart/form-data">
      <div class="form-group">
        <input class="form-control" type="file" name="file">
      </div>
      <br>
      <div class="form-group">
        <button class="btn btn-primary" type="submit">загрузить</button>
      </div>
    </form>
    <br />

...

  $(function() {
    $('#btnsubhotcall').click(function(e) {
        e.preventDefault();
        //Disable submit button
        $(this).prop('disabled',true);
        
        var filename = $('input[type=file]').val().replace(/C:\\fakepath\\/i, '');
        console.log('filename '+filename);
        if(filename.indexOf('zip') < 0 && filename.indexOf('rar') < 0){
            $('#alertMsg').text('Необходим файл с расширением *.zip или *.rar');
            $('button[type=submit]').prop('disabled',false);
            
            throw "Bad extanshion";
            
        }
        
        var form = document.forms["submit_file"];
        var formData = new FormData(form);
            
        // Ajax call for file uploaling
        var ajaxReq = $.ajax({
            url : 'fileUpload_hotcall?${_csrf.parameterName}=${_csrf.token}',
            type : 'POST',
            data : formData,
            cache : false,
            contentType : false,
            processData : false,
            xhr: function(){
                //Get XmlHttpRequest object
                 var xhr = $.ajaxSettings.xhr() ;
                
                //Set onprogress event handler 
                 xhr.upload.onprogress = function(event){
                    var perc = Math.round((event.loaded / event.total) * 100);
                    $('#progressBar').text(perc + '%');
                    $('#progressBar').css('width',perc + '%');
                 };
                 return xhr ;
            },
            beforeSend: function( xhr ) {
                //Reset alert message and progress bar
                $('#alertMsg').text('');
                $('#progressBar').text('');
                $('#progressBar').css('width','0%');
              }
        });

        // Called on success of file upload
        ajaxReq.done(function(msg) {
            $('#alertMsg').text(msg);
            $('input[type=file]').val('');
            $('button[type=submit]').prop('disabled',false);
        });
        
        // Called on failure of file upload
        ajaxReq.fail(function(jqXHR) {
            $('#alertMsg').text('Возникла ощибка\n'+jqXHR.responseText+'('+jqXHR.status+
                    ' - '+jqXHR.statusText+')');
            $('button[type=submit]').prop('disabled',false);
        });
    });
}); 

PetitController.java

  @PostMapping("/fileUpload_hotcall")
   public ResponseEntity<Object> fileUpload(@RequestParam(value = "_csrf", required = false) String csrf, @RequestParam("file") MultipartFile file)
         throws IOException, JAXBException {

      // Save file on system
      if (!file.getOriginalFilename().isEmpty()) {
          
         String pathStoreUploadedFile = Option.getDirectory("directory","directories.properties");
         
         File f = new File(pathStoreUploadedFile, file.getOriginalFilename());
         BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(f));
         outputStream.write(file.getBytes());
         outputStream.flush();
         outputStream.close();
         
         List<Petit> pt = petitService.parseArchiveFile(f);
         
         for(Petit p : pt) petitService.addPetit(p);
         
      }else{
         return new ResponseEntity<>("Файл не загружен.",HttpStatus.BAD_REQUEST);
      }
      
      return new ResponseEntity<>("Файл успешно загружен в базу.",HttpStatus.OK);
   }
java
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    BigTows
    2020-09-07T18:37:43Z2020-09-07T18:37:43Z

    或者,您可以将 CSRF 令牌添加到操作中,这样它就可以工作了。

     <form name ="submit_file" 
           action="action="fileUpload_hotcall?${_csrf.parameterName}=${_csrf.token}"" 
           method="post" enctype="multipart/form-data">
    

    但是最好(因为安全参数)将此数据移动到请求的标头或正文中,例如使用 JavaScript。

    第 18.5.4 段中的更多详细信息

    • 1

相关问题

  • wpcap 找不到指定的模块

  • 如何以编程方式从桌面应用程序打开 HTML 页面?

  • Android Studio 中的 R.java 文件在哪里?

  • HashMap 初始化

  • 如何使用 lambda 表达式通过增加与原点的距离来对点进行排序?

  • 最大化窗口时如何调整元素大小?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5