2016-04-08 12 views
1

WebApi2'de json'da bazı veriler sunan özel bir yazılıma sahibim. Angular'ın $ http kullanarak iOS ve Android'de İyonik'ten bu API'ye erişmeye çalışıyorum. Android'de her şey yolunda ve doğru sonuç alıyorum. Ancak iOS'ta garip bir şey oluyor, $ http bile istek göndermiyor ve hata veriyor, http durum kodu 0 döndürüyor. Bu sorun sadece iOS emülatöründe ve iPhone'da var. Dahası, başka bir site veya sahte test api talep ederken bu davranış gözlemlenemez. Zaten çalıştığım şeyİyonik IOS, harici Api'ye istek göndermiyor Api

:

  • Add "Erişim-Control-Allow-Origin: *" başlığı.
  • ionic.project için vekil ekleyin, ancak bu iyonik
  • bu ayarlayarak config.xml'de alanlar arası kullanmak açısal
  • yapılandırabilir ekle Serve çalışan tek sorunu düzeltildi:

    $ httpProvider. defaults.useXDomain = true; $ httpProvider.defaults.headers.common ['X-Istenen-With'] ile siliniz;

Herhangi bir ipucu? Belki bu sunucu tarafı problemidir?

cevap

0

Bu, 9.0'dan daha düşük bir iOS sürümünde de oluyor mu? Çünkü iOS 9.0'dan beri $ http ile ilgili bazı sorunlar oldu. Değilse, this makalesini kontrol eder. Ben bu forum başlığını buldum bu hatanın aramaya başladığımda

çözümleri

arıyorsunuz. , katkıda bulunanların da bu hatayı aldıklarını ve hatalarının, bir http isteği kullanılarak bir ağ isteği yapıldığında tetiklendiğini söyledi. I uygulamasında da $ http kullanmıştım, ancak uygulama başladığında aracılığıyla herhangi bir istekte bulunmadım. Ayrıca, forum iş parçacığında, bir ağ isteğine özel başlıklar ekleyerek sorununun tetiklendiğini belirtti. için sorunu çözmek, üstbilgiler değerinde bir lider alana sahip olmamalıdır. Özel üstbilgilerim vardı, ancak değerinden önce boş alanım yoktu. Bu yüzden (yanlış olduğu gibi), bu yazının bana 'un yardımcı olamayacağına karar verdim.

İşte önümüzdeki çalıştı budur:

tekrar İyonik blog makalesinden tüm önerileri okuyun ve projeme uygulamak çalıştı - bu yardım etmedi. Ben satıcı dosyalarında hata alma gibi ben karar verdim, Ionic Çerçeve, İyonik CLI ve tüm üçüncü parti kütüphaneleri (Angular, Restangular, ngStorage, ...) güncellemeyi denemeliyim, biraz zaman aldı, ama ben uygulamasını tekrar çalıştırdım aynı hatayı aldım. Ben yeni bir "temiz" iyonik uygulama ve yarattım düzgün çalıştı - bu yüzden sorunun kodumda bir yerlerde olduğundan emin oldum. Ben app hata ayıklama ve "eski okul yolu" - benim kod içinde kazma kod blokları kesmeye çalışıyorum ve daha sonra uygulaması işe yarayacağını görmek ( kullanmak mümkün oldu önce hata var çünkü Hata ayıklama için Safari dev araçları. Bu şekilde, kodumdaki hangi satırının bu hatayı tetiklediğini öğrendim.

$http.defaults.headers.common.Authorization = 'Basic ' + $localStorage.user.authToken; 

Hizmetin başlatıldığında (yukarıya bakınız) kod satırı yürütür bağımlılık enjeksiyon benim kendi hizmeti kullanmak: Bu hat oldu. Bu yüzden, $ http servisi, karşılaştığım hatasına neden oluyordu. Benim koddan bu çizgiyi çıkarılır ve yapılandırmasına yetkilendirme belirteç başlıklarıyla böyle her isteği, yerini: my app bana izin hangi (Yaşasın) yüklemek için başladıktan sonra o

$http.post(appConfig.apiUrl + 'profile', data, { headers: {'Authorization': $localStorage.user.authToken} }) 

diğer sorunlarına bakın (Booo).

+0

Diğer sitelere istekte bulunulduğu şekilde çalışıyor. Bu yüzden, özel başlıklarla sorun olmaz, hiç eklemiyorum. –