Zab*_*abs 6 php yii cors cordova
我有一个移动应用程序,它使用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.
Run Code Online (Sandbox Code Playgroud)
显然我需要启用CORS来读取消息,在myApiController.php中,我在Yii应用程序中有以下代码,我认为应该这样做:
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();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以协助解决这个问题吗?该应用程序使用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>
Run Code Online (Sandbox Code Playgroud)
- 更新 - 我遇到过这个看起来很有用的链接 https://gist.github.com/sourcec0de/4237402
尝试在API控制器构造函数中添加以下代码,它适用于我.
Run Code Online (Sandbox Code Playgroud)header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: PUT, GET, POST"); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
| 归档时间: |
|
| 查看次数: |
15871 次 |
| 最近记录: |