web-dev-qa-db-ja.com

CORS + Cordova:の問題:Access-Control-Allow-Origin

私はこの問題について何時間も探していましたが、これに対する解決策はまだ見つかりません。

アプリコルドバ(基本的にHTML/JS)を開発しているので、アプリはナビゲーターからモバイルで実行され、APIにajaxリクエストを送信するのに問題があります: https://developer.riotgames.com/ しかし、Googleページを取得したいだけだとしましょう。

一体どうやってそれをするのですか、これも可能ですか?以下に簡単な例を示します。

$.ajax({
    type: "GET",
    url: "https://google.com",
    dataType: "text",
    success: function(response){
        alert("!!!");
    },
    error: function(error){
        alert("...");
    }
});

私は同じエラーを何度も繰り返しています:

XMLHttpRequestはロードできません https://google.com/ 。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン「null」はアクセスを許可されていません

Originの「null」は、コードをfile:///D:/Projets/LoL/www/index.htmlから実行し、ナビゲーターがブロックしていることを読んだためですが、--disable-web-securityでセキュリティを無効にするとうまくいきません。もちろん、参加したいサーバーにアクセスできません。

ご協力ありがとうございました!

16
Navet

Cordovaホワイトリストプラグインが必要です: https://cordova.Apache.org/docs/en/latest/reference/cordova-plugin-whitelist/

Config.xmlでこれを用意します。

<access Origin="*" />
<allow-navigation href="*"/>

また、index.htmlにContent-Security-Policyメタがあります。何かのようなもの:

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data:">
18
Niels Steenbeek

2019年8月1日以降に問題が発生した場合。この Access-Control-Allow-Origin Error ..(using cordova) は、問題に関連している可能性があります。

0
Rafael M.

私の問題を解決したノードjsサーバーに以下を追加しました。

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

これは、nodejsを使用している場合に役立ちます。

ありがとう

0
Deepak Bhatta