【问题标题】:CSRF token mismatch while uploading image using ajax in CakePHP 3.6在 CakePHP 3.6 中使用 ajax 上传图像时 CSRF 令牌不匹配
【发布时间】:2019-01-15 14:13:07
【问题描述】:

我试过了

  class UsersController extends AppController
  {
      public function beforeFilter(Event $event)
      {
        $this->getEventManager()->off($this->Csrf);
      } 
   public function ajaxEdit($id = null)
   {
     $this->autoRender = false;

    debug($id);

    debug($this->request->getData());
   }

我正在使用 ajax 代码

$(document).ready(function(){
$('#user-profile').change(function(){
    $('.loader-body').show();
    var form = $('#user-profile-image')[0];
    var formData = new FormData(form);
    var tutorial_id = $('#user-file-id').val();
    $.ajax({
        url :"/users/ajax-edit/"+tutorial_id,
        method:"POST",
        data:formData,
        contentType:false,
        cache: false,
        processData:false,
        success:function(data){
            let parseData = $.parseJSON(data);
            if (parseData.status === true) {
                location.reload();
                var value = parseData.url;
                console.log(value);
            } else {
                alert(parseData.message);
            }
        }
      });
    });
   });

我已从这些链接中获得帮助

  1. CakePHP ajax CSRF token mismatch

2https://book.cakephp.org/3.0/en/controllers/components/csrf.html

获取 CSRF 令牌不匹配(见附图)

https://i.stack.imgur.com/FsVZu.png

【问题讨论】:

    标签: ajax cakephp-3.0


    【解决方案1】:

    首先,如果您在 ajax 调用中使用 POST 方法,那么您应该将 tutorial_id 作为数据发送,而不是在 url 中发送。

    您可以通过 ajax 调用中的特殊 X-CSRF-Token 标头向您发送 CSRF 令牌来解决此问题。 https://book.cakephp.org/3.0/en/controllers/components/csrf.html

        beforeSend: function (xhr) {
        xhr.setRequestHeader('X-CSRF-Token', $('[name="_csrfToken"]').val());
    },
    

    您可以为您的 ajax 操作禁用 CSRF 组件[Cakephp 不推荐]:

    public function beforeFilter(Event $event) {
         if (in_array($this->request->action, ['ajaxEdit'])) {
             $this->eventManager()->off($this->Csrf);
         }
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 2017-01-25
      • 2016-07-04
      相关资源
      最近更新 更多