リクエストは外部であり、アプリケーションをローカルで提供しているため、CORSの問題が発生します。
(ionic serve
を使用している場合)は、イオン構成ファイルにローカルプロキシを設定する必要があります。
Ionic 2のプロジェクトディレクトリを確認し、ionic.config.json
というファイルを探します。通常、プロジェクトのルートディレクトリにあります(そこにはpackage.jsonなどが必要です)。
ファイルを開き、これは(その1の前の行は、カンマ(,
)で終了していること、それはJSONファイルなので、必ずすることを忘れないでください)を追加:
"proxies": [
{
"path": "/server",
"proxyUrl": "http://phi.dev"
}
]
がで、今HTTPリクエストを実行しているセクションで、http://phi.dev
を/server
に置き換えます。私はここに例を挙げます。
あなたはおそらくこのように、テストおよびコンパイル環境用のデバッグフラグを入れたいので、私は、しかし、、このような編集がコンパイルされたアプリが動作しないようになりますことを認識することが、あなたをお勧めします:
class MyServiceOrComponent {
private debug: boolean = true; // Set this flag to FALSE when you need to actually compile the app for any real device.
private server: string = this.debug ? "/server" : "http://phi.dev";
constructor(private http: HTTP) {
const login = "/api/login"; // don't to it exactly like that, make a static list or something like this to store paths.
let request = this.http.get(this.server + login).then((res) => {
console.log(res);
});
}
}
簡単に説明すると、「ローカルホスト」としてHTTPリクエストを実行すると、(CORSポリシーのために)例外がスローされます。これは、テスト環境(localhost)でアプリケーションを実行している場合にのみ発生します。このようなことを避けるために、プロキシーを提供して、要求が有効になるようにします。
ありがとうございます!それは今働く。すべての説明をありがとう! –
コンパイルが必要な場合は、フラグをfalseに設定してください。また、さらなる問題として、** ionic build **を実行してフラグを忘れて、それを真のままにしておくと、再度ビルドするときにさらにコードを編集する必要があることに注意してください。デバッグフラグを変更した後は、コンパイルされたAPKの変更が反映されない可能性がありますので注意してください)このような場合には、サーバー上でいくつかの変更をコミットすることができます(デーモンすべてを再コンパイルする!) – briosheje