我有2个(本地)子域:kohana.local.com
和wordpress.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方向的解决方案
答案 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