Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 否';访问控制允许原点';标题已存在_Javascript_Php_Angularjs_Cordova_Slim - Fatal编程技术网

Javascript 否';访问控制允许原点';标题已存在

Javascript 否';访问控制允许原点';标题已存在,javascript,php,angularjs,cordova,slim,Javascript,Php,Angularjs,Cordova,Slim,我正在使用angular.js为使用cordova的移动设备制作一个ReSTful应用程序。 对于服务器端,我使用的是slim framework.all,根据本教程:() 但当我将api文件夹上载到服务器时,出现错误: 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“localhost”。响应的HTTP状态代码为404 我读过关于添加“访问控制允许来源”的内容 并根据这个环节实施: 也试过 $app->get('/session',

我正在使用angular.js为使用cordova的移动设备制作一个ReSTful应用程序。 对于服务器端,我使用的是slim framework.all,根据本教程:()

但当我将api文件夹上载到服务器时,出现错误: 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“localhost”。响应的HTTP状态代码为404

我读过关于添加“访问控制允许来源”的内容 并根据这个环节实施:

也试过

$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);
});
我仍然收到同样的错误

-->最后一行正确吗<代码>回声响应(200美元会话)

提前感谢:)

更新 我在firefox和chrome上使用相同的文件,chrome可以访问服务器上的文件。 另外,我服务器上的一个JSON文件早些时候被cordova应用程序访问,现在无法工作。调用代码与ie完全相同

.controller('ListController', ['$scope', '$http', function($scope, $http) {
  $http.get('js/data.json').success(function(product_data) {
    $scope.artists = product_data;
  });
}])

使用
--禁用web安全标志打开Chrome。这将阻止它出现,并允许您在桌面上进行开发

Cordova/PhoneGap基本上是在应用程序表单中为您执行此操作。根据您所使用的操作系统的不同,您可能需要查看一下如何使用该标志打开它


另外,在启用标志的情况下,不要继续使用浏览器进行正常活动。如果可能,还可以使用CLI打开新的用户配置文件,这样就不会影响现有配置文件并使您面临任何安全漏洞。

某些web浏览器不允许从localhost(或localhost的任何别名,如127.0.0.1)使用COR。解决方案是使用非本地主机url访问它

其中一个可能有效的url是您的IP地址

如果您不想使用IP地址(可能是因为每次连接时路由器都会随机分配该地址),那么您可以通过修改
/etc/hosts
(或Windows上的
Windows\System32\Drivers\etc\hosts
)为自己分配一个假域

例如,将其添加到
/etc/hosts

127.0.1.1   thismachine

然后,您可以通过键入
http://thismachine
在您的web浏览器中。

多读一些内容……不止一个标题,还需要考虑飞行前的请求。好的开始是将标题写入实际响应。您现在正试图将其写入未定义的变量中。改用$app->response->header(…)。@MikaTuupola您的意思是只为该行或任何地方更改(到$app->response)?为什么建议这样做而不是实现CORS?这是一个服务器端问题,因此手机也会有同样的问题。这是我在本地服务器上尝试应用程序时所做的,但问题来自服务器,因为没有授予权限。@Cerad这是我在最近使用的cordova应用程序上解决问题的方法,不同之处在于我使用的是第三方API。但是,如果它起作用,那就没问题了。不幸的是,在这种情况下,它似乎不起作用。上面两个代码中的哪一个是正确的,以及哪一个变量应该放在最后一行只有一个代码。第二个是你在浏览器中键入的内容,你定义域的哪一行并不重要。我宁愿把它放在文件的最上面。有些人喜欢把它放在最后一行。只要确保文件以换行结束,以防一些软件在没有换行的情况下拒绝处理最后一行-这就是我喜欢将其放在顶部的原因。
127.0.1.1   thismachine