私はionicアプリで作業しています。私の問題は、サーバーからデータを取得しようとすると、これを取得しました:
XMLHttpRequestはロードできません https://mywebsite.com/api 。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、Origin ' http:// localhost 'はアクセスを許可されません。
私はすでにこれを.htaccessに追加しようとしています:ヘッダーセットAccess-Control-Allow-Origin:*
そして、これは私のAPIページ(PHP)に:header( 'Access-Control-Allow-Origin:*');
それでも動作しない
$ http.get(url).success(function(response){...}
PHPファイルの先頭に置きます:
<?php
header("Access-Control-Allow-Origin: *");
// then your stuff goes here
?>
注:PHPヘッダー関数のすべての使用と同様に、これはサーバーから出力が送信される前でなければなりません。
このcors問題は、ionで簡単に回避できます。
Ionic.config.json(以前はionic.project)に移動して、たとえばプロキシを追加します。
{
"name": "proxy-example",
"app_id": "",
"proxies": [
{
"path": "/api",
"proxyUrl": "http://cors.api.com/api"
}
]
}
その後、apiを呼び出すときに、「 https://mywebsite.com/api 」ではなく「/ api /」を使用します。
詳細については:
前提:この問題は通常、ionic serveを実行するか、ionic webアプリとしてではなく、ionic asアプリとして。
プロジェクトの変更を避け、拡張機能を使用してCORSを無効にすることができます。
クロムを使用して開発する場合、次のようになります。
または、Firefoxで必要な場合は、次のようにします。
https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/
IEとEdgeは吸うので、これらの場合は設定でCORSを手動で無効にする必要があります
これは、AngularおよびIonicで作業するときに見られる典型的なエラーです。問題は、アプリのブラウザーに読み込まれたアプリがOriginローカルアドレスhttp://localhost:8100
から来て、AJAXリクエストをlocalhost:8100
リクエストは、Originとは異なる任意のポイントから呼び出され、[〜#〜] cors [〜#〜](Cross Origin Resource Sharing)プリフライト要求は、リソースにアクセスできるかどうかを確認します。
ソリューションは、バックエンドへのプロキシを使用することです。これにより、特定のURLをハイジャックし、バックエンドサーバーに送信できます。実装は簡単です。
1.-プロジェクトのルートフォルダーにあるionic.config.json
ファイルを変更します。
2.-新しいホストがionic.config.json
にあると仮定して、http://localhost:3000
ファイル内にプロキシを設定します。
"proxies": [
{
"path": "/endpoints",
"proxyUrl": "http://localhost:3000"
}
]
3.-サービスで、このhttp://localhost:3000/endpoints/any/path/that/you/use
からこの../endpoints/any/path/that/you/use
にリクエストのパスを少し変更します(別のホストがlocalhost:3000
にあり、コンテキストが/endpoints
であると仮定します)
これについてさらに情報が必要な場合は、 http://blog.ionic.io/handling-cors-issues-in-ionic/ を確認してください。