用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6920|回复: 8
收起左侧

[版本 3.x] CI使用Ajax的POST方式发送请求是禁止访问

[复制链接]
发表于 2015-6-3 09:06:53 | 显示全部楼层 |阅读模式
在使用Ajax方式的POST方法发送请求时,总是显示403,使用GET方式的时候没有出现这个问题
JS复制代码
 
$(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');}
        });    
    })
});
 
 
 
 
复制代码


发表于 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哪个地方出现了问题

发表于 2015-6-3 11:40:42 | 显示全部楼层
墨家巨子 发表于 2015-6-3 10:43
$this.attr("name")//表示的是一个控制器+方法名,也就是CI中的url地址
我使用GET方法可以,但是使用POST ...

先清空你要用 ajax 送往的方法內的代碼,只 echo 1;
確認 ajax 傳輸正確

不要再琢磨於 GET 有成功但 POST 沒成功這件事了!
往往錯誤都出現在一些小地方
发表于 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   

地址和文件名都没有问题

发表于 2015-6-3 12:00:03 | 显示全部楼层
 楼主| 发表于 2015-6-3 15:23:45 | 显示全部楼层
Closer 发表于 2015-6-3 12:00
參考 百度知道 - 为什么我用jQuery Ajax调用后台方法,结果被403了

问题解决了,原因是我把CSRF设置TRUEl,所以无法通过POST方式提交
PHP复制代码
 
$config['csrf_protection'] = FALSE;
 
复制代码

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

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

var token = $('input[name=csrf_test_name]').val();

{csrf_test_name : token}

本版积分规则