$ http.get()错误'Access-Control-Allow-Origin'

时间:2016-05-02 16:09:21

标签: angularjs ionic-framework

我必须使用API​​休息,但每次都有这个错误吗?

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:8100”访问。

$scope.submit = function(login, password){
url = 'http://x.x.x.x:x/x/x/x/x/'+login+'?password='+password;
console.log(url);
instanceId = '1';
tokenId = '';
userId = '';
$http.get(url, {
      headers: {
        'Accept': 'application/json',
        'Context': 'instance='+tokenId+';token='+tokenId+';user='+userId
      }
  })
  .success(function(data){
    $scope.firstName = data.user.firstName;
    $scope.lastName = data.user.lastName;
    $scope.profession = data.user.mission;

    userId = data.user.id;*/
    localStorage.setItem("userId", JSON.stringify(userId));
    $location.path('app/home/');
  })
  .error(function(data, status){
    console.log(data + "-" + status);
    alert(status);
});

1 个答案:

答案 0 :(得分:0)

CORS只是在使用ionic serveionic run/emulate -l的开发模式下运行您的应用时的问题,而不是作为与Cordova打包的移动应用运行时,一个简单的选项就是完全禁用CORS以进行本地开发。如果您使用Chrome进行调试,可以使用名为Allow-Control-Allow-Origin: *的插件来禁用CORS。
或者如果你想解决这个问题,有两种方法:

  • 第一个也是更简单的解决方案是只允许API端点的所有来源。缺点是我们无法始终控制我们正在访问的端点。
  • 幸运的是,我们有第二种方式:Ionic CLI proxy server,ionic提供了一个关于此的精彩博客,请参阅http://blog.ionic.io/handling-cors-issues-in-ionic/

希望这会有所帮助。