我有两个(本地)子域: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
}
});
当ajax调用从kohana.local.com发出时,一切都很好。如果它是从wordpress.local.com发出的$this->request->is_ajax()
是假的,并且方法不是"post",而是"get"。这其中的原因是什么?如何使其发挥作用?Post是必需的,is_ajax对安全性和验证都很好。
提前感谢。
编辑:Post到jsonp是不可能的,所以我不能使用这种方法。我会试着找到json
您可以简单地使用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?