2017-09-03 15 views
0

私はnode.jsサーバーへのAJAX呼び出しを成功させようと努力してきました。AndroidでCordovaを使用してAJAXが失敗する

私は次のことを行っている:

1)は私のNode.jsサーバにCORSパッケージをインストール。 AJAXはブラウザで動作しました。

2)は、index.htmlをするには、以下のコンテンツセキュリティポリシーを追加しました:

<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://maps.googleapis.com https://163.172.175.135"> 

3)私のconfig.xmlに数行を追加しました:

<?xml version='1.0' encoding='utf-8'?> 
<widget id="roda.X.XXXX" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name>Roda</name> 
    <description> 
     A sample Apache Cordova application that responds to the deviceready event. 
    </description> 
    <author email="[email protected]" href="http://cordova.io"> 
     Apache Cordova Team 
    </author> 
    <content src="index.html" /> 
    <access origin="*" /> 
    <allow-navigation href="*" /> 
    <allow-intent href="*" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-intent href="tel:*" /> 
    <allow-intent href="sms:*" /> 
    <allow-intent href="mailto:*" /> 
    <allow-intent href="geo:*" /> 
    <platform name="android"> 
     <allow-intent href="market:*" /> 
    </platform> 
    <platform name="ios"> 
     <allow-intent href="itms:*" /> 
     <allow-intent href="itms-apps:*" /> 
    </platform> 
    <engine name="android" spec="^6.2.3" /> 
    <engine name="browser" spec="^4.1.0" /> 
    <plugin name="cordova-plugin-geolocation" spec="^2.4.3" /> 
    <plugin name="cordova-plugin-whitelist" spec="^1.3.2" /> 
</widget> 

私は何を見逃していますか?

+0

正確なエラーメッセージを追加してください – Phonolog

+0

何とか私はAPKに署名してGoogle Playストアにアップロードしたときに問題が発生しました。私がAPKをケーブルで転送し、それを私の電話機で直接実行すると、AJAXが動作します。 –

答えて

0

AJAXはデバッグモードでは動作しますが、リリースモードでは動作しないことがわかりました。問題は、サーバーに接続するためにドメイン名の代わりにIPアドレスを使用していたため、SSL検証に失敗したことです。デバッグモードでは、SSL証明書は検証されません。

Phew。問題が解決しました!

関連する問題