【发布时间】:2015-05-09 16:49:22
【问题描述】:
我正在使用 angular.js 为使用 cordova 的移动设备制作一个 ReSTful 应用程序。 对于服务器端,我使用的是 slim framework.all 根据本教程:(http://www.angularcode.com/user-authentication-using-angularjs-php-mysql/)
但是当我将 api 文件夹上传到服务器时,出现错误: 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost' 不允许访问。响应的 HTTP 状态代码为 404。
我已阅读有关添加“Access-Control-Allow-Origin”的信息 并根据此链接实施: http://help.slimframework.com/discussions/problems/810-no-subject
$app->get('/session', function() {
**$response->header('Access-Control-Allow-Origin', '*');**
$db = new DbHandler();
$session = $db->getSession();
$response["uid"] = $session['uid'];
$response["email"] = $session['email'];
$response["name"] = $session['name'];
echoResponse(200, $session);
});
也试过了
$app->get('/session', function() {
**$session->header('Access-Control-Allow-Origin', '*');**
$db = new DbHandler();
$session = $db->getSession();
$response["uid"] = $session['uid'];
$response["email"] = $session['email'];
$response["name"] = $session['name'];
echoResponse(200, $session);
});
我仍然收到同样的错误。
--> 最后一行是否正确? echoResponse(200, $session);
提前谢谢你:)
更新
我在 Firefox 和 chrome 上使用相同的文件,并且 chrome 能够访问服务器上的文件。 我的服务器上的一个 JSON 文件之前也被 cordova 应用程序访问过,现在无法正常工作。调用代码完全相同,即
.controller('ListController', ['$scope', '$http', function($scope, $http) {
$http.get('js/data.json').success(function(product_data) {
$scope.artists = product_data;
});
}])
【问题讨论】:
-
做更多的阅读......它不仅仅是一个标题,还需要考虑预检请求
-
好的开始是将标头写入实际响应。您现在正尝试将其写入未定义的变量。使用 $app->response->header(...) 代替。
-
@MikaTuupola 你的意思是只为那条线或任何地方改变(到 $app->response)?
标签: javascript php angularjs cordova slim