Kohana:如何从ajax发送外部请求?

时间:2013-02-12 06:13:21

标签: php kohana kohana-3.2

我有一些控制器Ajax。该控制器对请求进行一些验证,如果不是从ajax返回错误消息。

函数is_ajax()检查标题X-Requested-With并返回true或false。

我正在使用ajax中的这个链接和所有工作。

/ AJAX / somecontroller / someaction

当我尝试在内部使用它时 - 我有自己的验证错误 - 而不是ajax请求。

有我的代码:

$deleted = Request::factory("/ajax/somecontroller/someaction")
                        ->headers("Content-Type", "application/x-www-form-urlencoded")
                        ->headers('HTTP_X_REQUESTED_WITH', 'XmlHttpRequest')
                        ->headers('X-Requested-With', 'XmlHttpRequest')                            
                        ->method(Request::POST)
                        ->post(array(
                            "id_zone_comp" => $id_zone_comp
                        ))
                        ->execute()->body();

我发送所需的heades但有错误。

如何发送外部请求等内部请求?

Kohana 3.2。


当然我可以处理内部查询,例如Ajax,只是在is_internal()之后给它们访问,但这不是答案。

1 个答案:

答案 0 :(得分:1)

您遇到的问题与事实上是内部请求有关。因此,您发送的标头不会填充$_SERVER环境信息数组。它们保留在$this->request->headers()内。

根据$ _SERVER内容完成ajax检查,如下所示:

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']))
{
    // Typically used to denote AJAX requests
    $requested_with = $_SERVER['HTTP_X_REQUESTED_WITH'];
}

唯一不包含is_internal()检查的解决方案是将此请求设为外部请求,为此,您必须将请求网址设置为包含协议(http://)并已完整域名 - 基本上是一个完整的地址。然后,请求将使用新标头填充$ _SERVER数组,is_ajax()应该让它通过。