ZF2 setJsonpCallback()返回错误的内容类型(application / json而不是application / javascript)

时间:2015-08-13 13:30:03

标签: zend-framework2 jsonp

我们正在使用Zend Framework 2.4进行开发,并且有一个应该支持jsonp回调的API。

不幸的是,Chrome不喜欢它返回的内容类型。它是application / json但需要是application / javascript。

return $jsonModel->setJsonpCallback($jsonpCallback);

在这种情况下有人知道ZF2错误吗?

干杯

1 个答案:

答案 0 :(得分:1)

不幸的是,JsonStrategy没有查看JsonModel的jsonp回调。如果我不得不猜测,那是因为JsonModel没有公开JsonModel :: $ jsonCallback的值。 JsonStrategy将默认查看渲染器JsonRenderer,用于jsonp回调并相应地应用内容类型的application / javascript或application / json。

在你的情况下,JsonRenderer没有设置jsonp回调,所以JsonStrategy返回一个内容类型的application / json。您可以通过从控制器访问JsonRenderer并设置jsonp回调值来更正此问题。

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $jsonModel = new JsonModel();
        $jsonModel->setVariables(array(
            'ping' => 'pong',
        ));

        /** @var \Zend\View\Renderer\JsonRenderer $jsonRenderer */
        $jsonRenderer = $this->getServiceLocator()->get('ViewJsonRenderer');
        $jsonRenderer->setJsonpCallback('wakawaka');

        return $jsonModel;
    }
}