我有一个使用API通过登录表单验证用户的移动应用程序。
这一直运作良好,但今天当我尝试登录时,在控制台日志中出现了以下消息:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myapp.local/myAppApi/V1/appLogin.
This can be fixed by moving the resource to the same domain or enabling CORS.
显然我需要启用CORS来读取消息,在我的 Yii 应用程序中的 myApiController.php 文件中,我认为下面的代码应该可以实现这一点:
protected function _renderJSON($status = 200)
{
$statusCodeMessage = $this->_getStatusCodeMessage($status);
header("HTTP/1.1 {$status} {$statusCodeMessage}");
// allow for Cross Origin Resource Sharing
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Authorization");
header('Content-type: application/json');
echo CJSON::encode($this->jsonArray);
foreach (Yii::app()->log->routes as $route) {
if ($route instanceof CWebLogRoute) {
$route->enabled = false; // disable any weblogroutes
}
}
Yii::app()->end();
}
有没有人能帮忙解决这个问题?该应用程序是使用cordova框架制作的,它连接到的API通过使用Yii构建的PHP应用程序工作。
任何建议都将不胜感激。
-- 更新 -- 我已经添加了以下内容到我的 htaccess 文件中,但没有起作用。
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
Header set Access-Control-Allow-Headers: Authorization
Header set Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE
</ifModule>
-- 更新 -- 我发现了这个链接,看起来很有用 https://gist.github.com/sourcec0de/4237402