1

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

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

阿贾克斯调用:

$.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()是错误的,并且方法不是“发布”,而是以某种方式“获取”。这是什么原因,以及如何使其发挥作用?Post 是必需的,is_ajax 有利于安全和验证。

提前致谢。

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

4

1 回答 1

0

您可以简单地使用jsondataType,因此您不需要使用回调。只需将标头添加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?

于 2013-01-15T23:44:21.137 回答