2016-11-30 6 views
5

禁断の応答になります。私がionic serveを実行するとうまくいきます。しかし、私がを実行すると、イオン実行のanroid私のデバイス上でそれを実行すると、それは私に403(禁じられた)応答を与える。は、私はちょうど私のIONIC 2プロジェクトでのHTTP POST呼び出しを行うにしようとしています

これは

  1. 実行コルドバのプラグインのようなコルドバ-plugin-を追加します。httpコールは、私はいくつかのことを試してみました。この問題を克服するために

    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; 
        } 
    } 
    } 
    

    を行われた私のPaymentService.tsありますホワイトリスト

  2. を追加しました私のconfig.xmlのこの行は<meta http-equiv="Content-Security-Policy" content="default-src *; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
  3. これに続きますリンク - >https://github.com/apache/cordova-plugin-whitelist指定された属性を持つ<access origin><allow-intent><allow-navigation>、*などのタグを追加します。
  4. はここhttp://blog.ionic.io/handling-cors-issues-in-ionic/

で述べたようにproxyUrlを追加しようとしたが、私の場合は、何も上記のソリューションが動作しません。

私は私のAndroidデバイスからポストコールを打つとき、私は、次のエラーレスポンスを取得:いくつかの解決策と

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 

誰でも:

{"_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"} 

を私はイオンの情報を、以下がありますか?

ありがとうございます。

答えて

0

あなたはこの例を試すことができますか? 「か:あなたは右のヘッダー

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

はい、私は正しいヘッダを送信しています:あなたは、「ファイル///」要求を認識するために、サーバー側のCORSフィルタを変更する必要があり、この問題を解決するために

。同じ要求がionic serve(ブラウザ)でうまく動作していますが、** ionic run android **(実際のデバイスではありません) 私は上記の例を試しましたが、同じ問題を試みました –

+0

Try ionic runアンドロイド-l -s -c'それはまた 'クロムがあるあなたに、より良いコンソールログを与える:// inspect'、そこにデバイスのため – flakerimi

+0

はい、私が試してみました@flakerimi'クロムを検査している。すでに// inspect'が、それはありますあまり役に立たない実際には、問題はorigin:file:// 'のためです。これはサーバー側からは許可されていません。 –

0
私はここに同じエラーを取得した

を送信していることを確認している、私はあなたが、イオンを実行すると、「// HTTP」と要求元の開始を提供するので、これが起こることがわかりましたhttps:// "とionic run android" file:/// "で始まります。

Access-Control-Allow-Origin: * 
+1

イオンプロキシでORIGINヘッダーを削除しないでください。そうでない場合、誰もがAccess-Control-Allow-Originを削除しなければならず、これは解決策ではありません! –

関連する問題