我正在使用angular.js为使用cordova的移动设备制作一个ReSTful应用。 对于服务器端我根据本教程使用slim framework.all:(http://www.angularcode.com/user-authentication-using-angularjs-php-mysql/)
但是当我将api文件夹上传到服务器时,会发生错误: No' Access-Control-Allow-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;
});
}])
答案 0 :(得分:0)
使用+-------+-------+-------+--------+--------+-------------+
| ID | V1 | V2 | V3 | V4 | fit.cluster |
+-------+-------+-------+--------+--------+-------------+
| DJ123 | 0.5 | 0.7 | -0.4 | -0.1 | 1 |
| DJ123 | 0.46 | 0.68 | -0.39 | -0.09 | 1 |
| DJ123 | 0.77 | 0.9 | -0.4 | -0.4 | 2 |
| DJ123 | 11.23 | 11.11 | -11.21 | -11.21 | 4 |
| DJ123 | 1.5 | 1.7 | -1.4 | -5.1 | 3 |
| DJ123 | 0.76 | 0.9 | -0.4 | -0.4 | 2 |
| DJ123 | 1.5 | 2.7 | -1.4 | -4.1 | 3 |
+-------+-------+-------+--------+--------+-------------+
标记打开Chrome。这样可以防止它出现并允许您在桌面上进行开发。
Cordova / PhoneGap基本上是以app形式为您做的。您可能需要查看如何使用标志打开它,具体取决于您所使用的操作系统。
此外,在启用标记的情况下,不要继续使用浏览器进行正常活动。如果可能,还可以使用CLI打开新的用户配置文件,这样它不会影响您现有的配置文件,并可以解决任何安全漏洞。
答案 1 :(得分:0)
某些Web浏览器不允许来自localhost的CORS(或localhost的任何别名,例如127.0.0.1)。解决方案是使用非localhost url访问它。
可能有效的一个网址是您的IP地址。
如果您不想使用您的IP地址(可能是因为每次连接时路由器都会随机分配),那么您可以通过修改/etc/hosts
(或Windows\System32\Drivers\etc\hosts
来为自己分配假域名窗口)。
例如,将其添加到/etc/hosts
:
127.0.1.1 thismachine
然后,您可以在网络浏览器中输入http://thismachine
来访问您的网络服务器。