在 Codeigniter 中设置跨域

Posted

技术标签:

【中文标题】在 Codeigniter 中设置跨域【英文标题】:Set Cross Domain in Codeigniter 【发布时间】:2013-12-29 00:05:47 【问题描述】:

当我运行托管项目服务时运行完美..

当我使用其他项目进行测试时出现错误或我无法从服务获得响应。 我尝试了很多但没有工作

我的 Ajax 调用:

self.ValidLogin = function () 
         try 
            $.ajax(
                type: "GET",
                url: "http://xxx.xxx.xxx.xxx/TEST/index.php/TestController/TestMethod?UserName=superadmin&Password=super",
                ,
                crossDomain: true,
                contentType: "application/json; charset=utf-8",
                async: false,
                dataType: 'json',
                cache: false,
                success: function (response) 
                    alert("valid response");
                ,
                error: function (ErrorResponse) 
                    alert("error");
                

            );
        
        catch (error) 
            alert("Catch:" + error);
        
    

服务端:

public function TestMethod()
    
        parse_str($_SERVER['QUERY_STRING'],$_GET);
        $UserName = $_GET['UserName'];
        $Password = $_GET['Password'];

        $this->load->model('LoginModel');
        $result = $this->LoginModel->Login($UserName,$Password);

        header('Content-type: application/json');
        header('Access-Control-Allow-Origin: *');
        echo json_encode($result);

    

我该怎么办?

【问题讨论】:

你检查你的get成功了吗? 那总是在 alert('Error') 你检查过这个question吗? 你有任何控制台错误吗? 【参考方案1】:

Long Rnd 得到解决方案后

self.ValidLogin= function () 
        try 
            $.ajax(
                type: "GET",
                url: "http://xxx.xxx.xxx.xxx/TEST/index.php/TestController/TestMethod?UserName=superadmin&Password=super",
                crossDomain: true,
                contentType: "application/x-www-form-urlencoded",
                async: false,
                dataType: 'json',
                processData: false,
                cache: false,
                success: function (response) 
                    alert("valid response");
                ,
                error: function (ErrorResponse) 
                    alert("error");
                
            );
        
        catch (error) 
        
    

【讨论】:

有什么区别?【参考方案2】:

移动

header('Access-Control-Allow-Origin:*');

到顶部

【讨论】:

我试过但结果一样:(【参考方案3】:

我已经在我的控制器上尝试过这个:

function __construct() 
        parent::__construct();
        $this->output->set_header('Access-Control-Allow-Origin: *');

而且它有效! 但是所有页面都没有。我仍在寻找所有内容的解决方案。 我猜这个配置应该是自动加载什么的。

【讨论】:

以上是关于在 Codeigniter 中设置跨域的主要内容,如果未能解决你的问题,请参考以下文章

跨域知识点

跨域知识点

nginx配置CI重写规则,codeigniter

nginx反向代理应用实例

nginx反向代理应用实例

CodeIgniter:将最后一个活动存储到数据库中