2016-11-30 9 views
5

Sadece IONIC 2 projemde bir http yayını araması yapmaya çalışıyorum. iyonik hizmeti çalıştırdığımda, iyi çalışıyor. Ama iyonic run anroid cihazımı çalıştırdığımda çalıştırdığımda bana 403 (yasak) yanıt veriyor.İyonik 2'de bir HTTP POST çağrısı yapılması yasak yanıt verir

Bu cordova eklenti cordova-plugin eklemek

  1. Run gibi http çağrı ben birkaç şey denedim bu sorunu aşmak için
    import {Http, Headers, RequestOptions} from '@angular/http'; 
    import 'rxjs/add/operator/map'; 
    import { Injectable } from '@angular/core'; 
    
    @Injectable() 
    export class PaymentService { 
    static get parameters() { 
        return [[Http]]; 
    } 
    
    constructor(private http:Http) {} 
    
    postToPaymentApi(data) { 
        let headers: Headers = new Headers() 
        headers.set('Content-type', 'application/x-www-form-urlencoded') 
        let options = new RequestOptions({headers: headers}) 
    
        var response = this.http.post("http://test/url",data,options).map(res => res.json()); 
        return response; 
        } 
    } 
    } 
    

    yapılmış olan benim PaymentService.ts olduğu beyaz liste yazıcısı
  2. Bu satırı eklediklerim eklendi: <meta http-equiv="Content-Security-Policy" content="default-src *; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
  3. Bunu takip et bağlantı -><access origin>, belirtilen özelliklere sahip * <allow-navigation>, <allow-intent> etiketleri eklemek için>https://github.com/apache/cordova-plugin-whitelist.
  4. , hiçbir yukarıdaki çözüm çalışıyor

Ama Benim durumumda http://blog.ionic.io/handling-cors-issues-in-ionic/ burada belirtildiği gibi proxyUrl eklemek için çalıştı.

ben aşağıdaki hata yanıt almak benim android cihazdan sonrası çağrısı vurduğunda: Bazı çözeltisi ile

Cordova CLI: 6.4.0 
Ionic Framework Version: 2.0.0-rc.3 
Ionic CLI Version: 2.1.12 
Ionic App Lib Version: 2.1.7 
Ionic App Scripts Version: 0.0.45 
ios-deploy version: Not installed 
ios-sim version: Not installed 
OS: Linux 4.4 
Node Version: v7.2.0 
Xcode version: Not installed 

Herkes:

{"_body":"", 
"status":403, 
"ok":false, 
"statusText":"Forbidden", 
"headers":{"Date":["Wed","30 Nov 2016 09:28:53 GMT"], 
"Content-Length":["0"]}, 
"type":2, 
"url":"http://test/url"} 

Ben iyonik bilgi şu var?

Şimdiden teşekkürler.

cevap

0

Bu örneği deneyebilir misiniz? "Veya: Eğer doğru başlıklarını

postToPaymentApi(data) { 
    let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 

    return new Promise(resolve => { 
     this.http.post('http://test/url',data, {headers: headers }) 
     .subscribe(respond => { 
      console.log(respond);  
     }); 
    });   
} 
+0

Evet, gönderiyorum doğru başlıkları:

Eğer "dosyasını ///" istekleri tanımak için sunucu tarafı CORS filtreyi değiştirmek gerekir Bu sorunu çözmek için. Aynı istek iyonik hizmeti (tarayıcıda) ile iyi çalışıyor ancak ** iyonik çalıştırma android ** ile çalışmıyor (bu, gerçek cihazda) Yukarıda belirtilen örneği denedim ama yine de aynı sorun –

+0

Denemeyi çalıştır android -l -s -c' size daha iyi konsol günlüğü verecek, ayrıca chrome: // inspect' var ve – flakerimi

+0

evet @ flakerimi için chrom: // inspect' denedim. çok fazla yardım. Aslında sorun, kaynak yüzünden: sunucu tarafında izin verilmeyen dosya: // '. –

0
Burada aynı hatayı başlamıştı

gönderiyor emin, sana iyonik çalıştırdığınızda, "http: //" ile istek kökenli başlangıç ​​hizmet çünkü bu gerçekleştiğini fark https: // "ve iyonik çalıştırmak android" file: /// "ile başlar.

Access-Control-Allow-Origin: * 
+1

İyonik proxy, ORIGIN başlığını kaldırmaz mı ?? Aksi halde, herkes Erişim-Kontrol-İzin-Kökeni kaldırmalıdır ve bu çözüm olmamalıdır! –