ajax crossdomain发布到php kohana 3.2无法正常工作

时间:2013-01-15 23:38:33

标签: php jquery ajax cross-domain kohana

我有2个(本地)子域:kohana.local.comwordpress.local.com。 jQuery插件(.js)位于kohana.local.com域,负责评估文章和检索两个域的费率。 Controller_Rating扩展了Controller。方法(action_getrating)具有以下代码(kohana 3.2):

if($this->request->post() && $this->request->is_ajax()){
    $this->auto_render = FALSE;
    echo "{$_REQUEST['callback']}(".json_encode($data).")";
}

Ajax电话:

$.ajax({
    type: "POST",
    url: "http://kohana.local.com/rating/getrating",
    dataType: "jsonp",
    data: { some_id: id },
    success: function(json){
            //do something
    }
});

当从kohana.local.com发出ajax调用时,一切都很好。如果它是从wordpress.local.com发出的$this->request->is_ajax()是假的,并且方法不是“发布”,而是以某种方式“获取”。这是什么原因,以及如何使其工作?发布是必需的,is_ajax有利于安全性和验证。

提前致谢。

修改 发布到jsonp是不可能的,所以我不能使用这种方法。我将不得不尝试找到json方向的解决方案

1 个答案:

答案 0 :(得分:0)

您可以简单地使用json dataType,因此您不需要使用回调。只需将标题Access-Control-Allow-Origin添加到发出请求的服务器(kohana.local.com)。

允许所有域名:

Access-Control-Allow-Origin: *

或指定允许的域名:

Access-Control-Allow-Origin: http://wordpress.local.host

规格:http://www.w3.org/TR/2008/WD-access-control-20080912/#access-control-allow-origin


多域解决方案:Access-Control-Allow-Origin Multiple Origin Domains?