2017-04-18 6 views
0

これはコードです。Ionic:IOSエミュレータで少し奇妙なCORS問題

$http({ method: 'GET', url: imageUrl }); 

私はIonicフレームワークを使用しています。それはweb、andorid mobileとandroid emulatorでうまく動作します。

しかし、私はIOS 9.3エミュレータ(4.1.1)で同じを使用する場合、私はそれが他のUIで作業しているように私は、バックエンドのいずれかの可能性のあるエラーをなくすことができたとエラーにXMLHttpRequest cannot load 'imageUrl'. Origin 'XXX' is not allowed by Access-Control-Allow-Origin.

を取得フレームワーク。また、バックエンド(Django framework)でCORS_ORIGIN_ALLOW_ALLCORS_ALLOW_CREDENTIALSTrueに設定し、ポート番号がCORS_ORIGIN_WHITELISTのIPアドレスと、必要なヘッダー(Access-Control-Allow-Originを含む)をCORS_ALLOW_HEADERSに追加しました。

したがって、IOSエミュレータ/プラットフォームでこのエラーを解決するために必要なことはありますか?

答えて

0

あなたが実行します。私の推測がある

ionic cordova emulate ios -l -c -s 

は、あなたがやっていることで、エミュレータが起動され、代わりに「localhostの」は、お使いのMacのIPアドレスにバインドされています。これにより、受け取り側のエンドポイントは、getリクエストのリクエストヘッダにMacのIPが表示されます。これは、シミュレータとは異なるアドレスであるため、クロスドメインリクエストとしてリクエストを表示します。要するに

Handling CORS issues in Ionic

イオンチームから次のガイドをしてみてください

  1. は、あなたのionic.config.jsonファイルでプロキシを設定します

    { "name": "proxy-example", "app_id": "", "proxies": [ { "path": "/api", "proxyUrl": "http://cors.api.com/api" } ] }

    1. ライブリロードサーバーが使用しているポートでlocalhostにリクエストします。あなたはこのようなあなたのエミュレートコマンドでこれを設定することができます:

    イオンコルドバをIOS -l -c -s --port 8080

をエミュレート