墨家巨子 发表于 2015-6-3 09:06:53

CI使用Ajax的POST方式发送请求是禁止访问

在使用Ajax方式的POST方法发送请求时,总是显示403,使用GET方式的时候没有出现这个问题

$(document).ready(function(){

   

    $(".fileShow").bind("click",function(){
      var $this=$(this);
      var $filename=$this.attr("id");
      var $fileurl=$this.attr("name");


      $.ajax({
            url:$fileurl,
            method:"post",
            dataType:"html",
            data:{filename:$filename},
            success:function(result){$("#fileshowContent").text(result);},
            error:function(){alert('error');}
      });   
    })
});





Closer 发表于 2015-6-3 09:40:42

本帖最后由 Closer 于 2015-6-3 09:42 编辑

我記得 JS 的變數宣告不用錢字號吧 ...
另外,你的 URL 是取 $this.attr("name")
這是表示一個控制器名+方法名?

墨家巨子 发表于 2015-6-3 10:43:38

Closer 发表于 2015-6-3 09:40
我記得 JS 的變數宣告不用錢字號吧 ...
另外,你的 URL 是取 $this.attr("name")
這是表示一個控制器名+方 ...

$this.attr("name")//表示的是一个控制器+方法名,也就是CI中的url地址
我使用GET方法可以,但是使用POST方法就是提示403 forbidden,是不是我的$config哪个地方出现了问题

Closer 发表于 2015-6-3 11:40:42

墨家巨子 发表于 2015-6-3 10:43
$this.attr("name")//表示的是一个控制器+方法名,也就是CI中的url地址
我使用GET方法可以,但是使用POST ...
先清空你要用 ajax 送往的方法內的代碼,只 echo 1;
確認 ajax 傳輸正確

不要再琢磨於 GET 有成功但 POST 沒成功這件事了!
往往錯誤都出現在一些小地方

Closer 发表于 2015-6-3 11:49:22

你先 alert 你的 filename & fileurl

墨家巨子 发表于 2015-6-3 11:55:26

Closer 发表于 2015-6-3 11:49
你先 alert 你的 filename & fileurl


两个变量的值为:
$fileurl   :      http://localhost/index.php/Filemanage/show
$filename:      ManageFile/file/test/a.php   

地址和文件名都没有问题

Closer 发表于 2015-6-3 12:00:03

參考 百度知道 - 为什么我用jQuery Ajax调用后台方法,结果被403了

墨家巨子 发表于 2015-6-3 15:23:45

Closer 发表于 2015-6-3 12:00
參考 百度知道 - 为什么我用jQuery Ajax调用后台方法,结果被403了

问题解决了,原因是我把CSRF设置TRUEl,所以无法通过POST方式提交

$config['csrf_protection'] = FALSE;

Closer 发表于 2015-6-3 15:31:56

墨家巨子 发表于 2015-6-3 15:23
问题解决了,原因是我把CSRF设置TRUEl,所以无法通过POST方式提交

CSRF 留著阿
多送出一個欄位給他即可

var token = $('input').val();

{csrf_test_name : token}
页: [1]
查看完整版本: CI使用Ajax的POST方式发送请求是禁止访问