JavaScript:“同源政策”失败

时间:2016-01-25 16:31:54

标签: javascript php codeigniter

我尝试了无数代码的排列,最接近成功的是关于“同源策略”的警告,或者我被反弹到应用程序的登录页面,这是写的使用CodeIgniter。

为了保持这种明智,请访问domain-one.com,我正在使用:

(function($) {
    var url = 'http://domain-two.com/get_data?callback=?';
    $.ajax({
        type: 'GET',
        url: url,
        async: false,
        contentType: "application/json",
        dataType: 'jsonp',
        success: function(json) {
            console.log(json);
        },
        error: function(e) {
            console.log(e.message);
        }
    });
})(jQuery);

在domain-two.com上的PHP中,我正在使用:

public function get_data () {
    $results = $this->model->method();
    if (count(results)>0):
        foreach (results as $array):
            $array['index'] = $array['value'];
            $array[] = $array_result;
        endforeach;

        header('content-type: application/json; charset=utf-8');
        header("access-control-allow-origin: *");

        $json = json_encode($array);

        # JSON if no callback
        if( ! $this->input->get('callback')):
            exit( $json );
        endif;
        # JSONP if valid callback
        if(is_valid_callback($this->input->get('callback'))):
            exit( $this->input->get('callback') . "(" . $json . ")" );
        endif;

    else:
        return false;
    endif;
}

此时,值得一提的是,当我访问PHP方法的链接时,它会为我提供所需的数据。但是,如果我通过包含JavaScript的网页执行此操作,则不会(“同源政策”错误,或者我已退回到登录页面)。

关于我如何使用回调的帮助充其量是不足的(有些建议使用实际的回调函数,其他人声称不需要这样的函数)。

在这5天之后,我不知道我打算做什么,考虑到大量不同的技术,这些技术似乎都不适合我。

欢迎任何建议!

1 个答案:

答案 0 :(得分:1)

domain-two.com

上的php中
header('Access-Control-Allow-Origin: http://domain-one.com');
header('Access-Control-Allow-Origin: http://domain-two.com');