11 Nisan 2016 Pazartesi

$http isteklerim error'a düşüyor!!!!

Evet sistemi baya çözdün ve bir uygulama yazmaya başladıııın :) Güzel. Ve sunucudan istekte bulunman gerekiyor. Envayi çeşit $http örneğini denedin ama bi sorun var. İstekler hep error'a düşüyor ve hata mesajı yok.

İlk olarak $http istek şekillerine bi bakalım

$scope.loadAds = function () {
        $http.get('http://www.domain_adim.com/MobileService/Ads'
        ).then(function (response) {
            console.info("success: ", response.data[0].LinkUrl);
        }, function (error, e2) {
            console.info("error %o %o", error, e2);
        });
    }

veya

[bu örneği sonra ekliycem :)) ]

Bu iki şekilden birini yaptığında dikkat edersen console çıktısı mesela Chrome console'unda

XMLHttpRequest cannot load http://www.superfaiz.com/MobileService/Ads. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.18:8100' is therefore not allowed access.

Cihaz diyo ki "abi bokunu yiyim ben CORS (Cross origin resource sharing) yüzünden başka biyerden veri çekmeye çalışıyorum ama yapamam" diyor :D Güvenlikten dolayı adamlar CORS için birkaç çözüm sunmuşlar. Bunlardan en işe yarar olanını şöyle tatbik ediyoruz.

ionic.project dosyamızın içine json'ın en sonuna

,
  "proxies": [
    {
      "path": "/MobileService/",
      "proxyUrl": "http://www.domain_adim.com/MobileService/"
    }
  ]

tanımlaması ekliyoruz

ve mevcut kodumuzdaki adresi şu şekilde değiştirelim

$http.get('http://192.168.0.18:8100/MobileService/Ads'
        ).then(function (response) {
            console.info("success: ", response.data[0].LinkUrl);
        }, function (error, e2) {
            console.info("error %o %o", error, e2);
        });

Böylece yerelde MobileService altına yaptığımız istekler yerel proxy sayesinde domain_adi altına yönleniyor.

Kolay gelsin.

Hiç yorum yok:

Yorum Gönder