我正在尝试为 CakePHP 中内置的 API 启用 CORS,以便可以通过 AppController 中的以下内容访问所有请求:
public function beforeFilter()
{
header("Access-Control-Allow-Origin: *");
}
这是在错误的地方吗?由于请求仍然被阻止。
更新:看来这确实有效,但因为我正在做类似的事情:
header('Content-Type: application/json');
echo json_encode(array('message'=>'Hello world!'));
在我的一些方法中,它的行为就好像它覆盖了 AppController 设置的标头,因此它不会出现在 JSON 调用的响应中。
有任何想法吗?
更新 2:返回如下 JSON,修复了问题:
$this->response->type('json');
$this->response->body(json_encode(array('message'=>'Hello world!')));
所以显然使用header()
在 Cake 中打破了以前的标题?
您可以使用 cake 响应对象来做到这一点;
$this->response->header('Access-Control-Allow-Origin', '*');
有关响应对象的更多信息;http://book.cakephp.org/2.0/en/controllers/request-response.html#setting-headers http://book.cakephp.org/2.0/en/controllers/request-response.html#setting-headers
然而,beforeRender() 回调似乎是一个更合乎逻辑的位置。
另一个选择是在您的 apache vhost 中添加此标头,或者 htaccess 示例可以在 Html5Boilerplate 的 htaccess 文件中找到,这是一个非常有趣的东西(有详细记录),因为它包含很多与 cakephp 配合良好的优化,如出色地;
https://github.com/h5bp/server-configs-apache/blob/master/dist/.htaccess https://github.com/h5bp/server-configs-apache/blob/master/dist/.htaccess
http://html5boilerplate.com/ http://html5boilerplate.com/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)