No' Access-Control-Allow-Origin'标题存在

时间:2015-05-09 16:49:22

标签: javascript php angularjs cordova slim

我正在使用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;
  });
}])

2 个答案:

答案 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来访问您的网络服务器。