2017-05-02 4 views
1

AJAXでファイルを取得しようとしているCordova/Phonegapアプリケーションがあります。私は次のエラーを取得する:CordovaのCORSリダイレクト

XMLHttpRequest cannot load https://docs.google.com/uc?export=open&id= .... Redirect from ' https://docs.google.com/uc?export=open&id= ...' to ' https://doc-xx-xx-docs.googleusercontent.com/docs/...?e=open ' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

私は​​3210

<access origin="*" /> 
<allow-navigation href="*" /> 
<allow-navigation href="http://*/*" /> 
<allow-navigation href="https://*/*" /> 

に以下を追加しようとしたとも私はcordova serveを使用して、ブラウザでアプリケーションにアクセスしていindex.html

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-eval' 'unsafe-inline' http: https:"> 

に追加しました。

まだ同じエラーが発生します。何か案が?

答えて

0

エンドポイントを制御できないとすれば、これを行うには独自のAPIを設定する必要があります。例えば

あなたがPHPでエンドポイントを作成する場合は、行含めることができます

header('Access-Control-Allow-Origin: *'); 

を次に、あなたのエンドポイントは、あなたのAPIへの応答を通過し、それを渡すことができ、Googleのエンドポイントに要求を転送することができますあなたのアプリを応答します。

私は、Googleのエンドポイントが他のサーバーからの要求を受け入れると考えていますが、送信元がnullではないと考えています。

実際には、リクエストがhttp://ではなく、file:// URLから来ていることを確認する必要があります。

+0

phpのエンドポイント?私はこれがCordovaアプリケーションだと言って、私はPHPプロキシをインストールすることはできません。 –

+0

私はそれがコルドバのアプリだと思います。ただし、CordovaのXMLHttpRequestは、origin nullのヘッダーとともに送信されます。あなたがファイルを要求しているGoogleのエンドポイントはnullの起点を受け入れないので、自分のサーバー上にリクエストを送信するためのプロキシとして独自のAPIが必要な場合があります。 –

+0

私の答えにちょっとしたことを加えて、うまくいけば分かりました。 –