首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSRF和ajax表单提交在编码点火器3中使用敲除js点击绑定-禁止错误

问CSRF和ajax表单提交在编码点火器3中使用敲除js点击绑定-禁止错误
EN

Stack Overflow用户
提问于 2016-03-30 08:18:24
回答 1查看 609关注 0票数 0

我试图通过ajax post方法提交一个用户表单,点击按钮,点击js,点击绑定。我收到的错误是403 -禁止的。

我确信这与中央应急基金有关,但无法解决。

View.php:

代码语言:javascript
复制
<?php echo form_open('client/search_client_database', ['role' => 'form']); ?>
  <fieldset>
    <div class="form-group">
      <label class="sr-only" for="search_client_input">Search for existing   clients</label>
      <div class="input-group">
      <input class="form-control input-sm" type="text" id="search_client_input" name="search_client_input" placeholder="Search for existing clients...">
      <span class="input-group-btn">
          <button class="btn btn-primary btn-sm" type="button" data-bind="click: search_client">Search</button>
      </span>
    </div>
   </div>
  </fieldset>
<?php echo form_close(); ?>

在单击按钮时,触发敲除Js单击绑定以启动对控制器的ajax调用。剔除js代码位于一个单独的js文件中,该文件与视图一起加载。

Client.js文件:

代码语言:javascript
复制
var base_url = window.location.origin;
var url = base_url+"/client/";

this.search_client = function()
        {           
            crsf = $("input[name=csrf_test_name]").val();
            dataString = $("#search_client_input").val();
            alert(crsf);
            $.ajax({
                url: url+"search_client_database",
                type: "post",
                cache: false,
                data: {crsf: crsf, data: dataString},
                success: function(customer_details) {
                    alert(customer_details);                    
                },
                error: function(xhr, ajaxOptions, thrownError)
                {
                    alert(xhr.status);
                    alert(thrownError);
                }
            });
        }

主计长:

代码语言:javascript
复制
public function search_client_database()
    {
        $data = $this->input->post('data');
        echo $data;
    }

我一直收到xhr错误403,也就是禁止的。URL中没有任何错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-30 12:27:29

您必须以在$config['csrf_token_name']中配置的相同名称返回csrf令牌。

在您的例子中,基于您的代码,它被称为csrf_test_name,因此您需要在Ajax请求中的data中使用它:

代码语言:javascript
复制
$.ajax({
  url: url + "search_client_database",
  type: "post",
  cache: false,
  data: {
    "csrf_token_name": crsf,
    data: dataString
  },
  success: function(customer_details) {
    alert(customer_details);
  },
  error: function(xhr, ajaxOptions, thrownError) {
    alert(xhr.status);
    alert(thrownError);
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36303278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档