在离子中设置CORS

时间:2015-12-25 10:15:50

标签: angularjs ionic cors

我正在创建我的第一个离子应用程序,但我在与cors挣扎,我在这个领域没有很多经验,所以这个问题可能看起来很愚蠢。

我无法访问api网站,因此我无法更改任何内容。 这是我用来从api站点获取数据的代码。我已经读过,使用离子服务测试时,这只是一个问题,但是我已经尝试构建Android应用程序并将apk转移到我的手机上,但它似乎在那里工作(我无法在手机上看到控制台登录以测试它:))

  app.controller('VolleyCtrl', function($http, $scope) {
      $scope.wedstrijden = [];
      $http.get('http://www.volleyadmin2.be/services/wedstrijden_xml.php?province_id=5&stamnummer=O-0696&format=json')
        .success(function(response) {
          angular.forEach(response, function(child) {
            $scope.wedstrijden.push(child);
          })
        });

  });

3 个答案:

答案 0 :(得分:3)

  

如果您使用的是较新版本的Cordova(或最新的Ionic CLI)来开发您的应用,则当您的应用尝试发出网络请求时,您可能会遇到http 404错误。

这可以通过Cordova Whitelist plugin快速解决。

您可以在Ionic docs: Cordova Whitelist找到更多文档。

<强>解决方案:

在shell /终端中运行以下命令:

ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git

您现在唯一需要做的就是为config.xml添加一个属性  文件:

<allow-navigation href="*" />

答案 1 :(得分:0)

可能有很多原因。

处理CORS意味着配置后端和前端。 在您的后端,取决于您的api正在运行的Web服务器。

我认为你不会使用&#34; ...你可以通过--disable-web-security flag打开它来禁用它来检查cors ...& #34;

最好只处理控制器中的http promise并在服务上移动http请求。 我可以告诉你我修复了什么以避免CORS预检麻烦。

默认情况下,Angular在$ http.defaults.headers中设置标头。{HTTP_VERB}。

我的案例是$ http.defaults.headers.post,内容类型为&#39; :&#39; application / json&#39;。 这种内容类型触发了chrome中的cors。 如果您设置“内容类型”并不重要。手动。这在Angular默认设置。

因此,修复程序将转到您的app.js文件,并在.config部分中插入您的代码

app.config(['$http', function ($http) { //Reset headers to avoid OPTIONS request (aka preflight) $httpProvider.defaults.headers.post = {}; }]);

答案 2 :(得分:0)

尝试了很多没有运气的解决方案后,最终

cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview@latest

已解决我的问题。