Phone 差距 Ajax 在 https 上失败
Phone Gap Ajax fail on https
我创建了 rest api wchich 只包含 html+css+js 文件。
我有简单的功能登录 wchich 通过 json 获取数据。
当我 运行 我的服务器上的这个应用程序出现 ajax 错误:状态就绪 0,状态 0
但是当我 运行 此代码在不同端口的 http 上时,它可以正常工作。
我使用 http 和 https url 从互联网上随机检查 json 个文件:
1. HTTP - http://jsonplaceholder.typicode.com/posts?userId=1
2. https - https://api.github.com/users/mralexgray/repos
它工作正常
这里是我的 js 函数,它调用按钮单击文档就绪:
function log_in() {
$.ajax({
type: 'GET',
async: true,
crossDomain: true,
/*url: "http://jsonplaceholder.typicode.com/posts?userId=1",*/
/*url: "https://api.github.com/users/mralexgray/repos",*/ /*na debug i relese dziala*/
url:"https://system.fastdata.com.pl:4567/apps/leadinfo/f/json.txt",
/*url: "https://system.fastdata.com.pl:4569/apps/x/y/json.txt",*/
data: {},
beforeSend: load_start(),
success: function (data) {
window.test = data;
console.log("autoryzowano");
console.log(data);
$("#login_error").append("tak", data[0]);
$("#login_error").css("display", "block");
$("#password").val('');
$("#username").val('');
$("#contact_info_load").remove();
},
error: function (xhr,err) {
console.log("nie autoryzowano");
$("#login_error").append("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
$("#login_error").append("responseText: "+xhr.responseText);
$("#login_error").css("display", "block");
$("#password").val('');
$("#username").val('');
$("#contact_info_load").remove();
}
});
}
这是我的 config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- config.xml reference: https://build.phonegap.com/docs/config-xml -->
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "Lead Info"
version = "1.0.0">
<name>LEADInfo</name>
<description>
</description>
<author >
FASTDATA Team
</author>
<icon src="fa-cogs.png" />
<!--
If you do not want any permissions to be added to your app, add the
following tag to your config.xml; you will still have the INTERNET
permission on your app, which PhoneGap requires.
-->
<preference name='phonegap-version' value='cli-5.2.0' />
<!--<preference name='phonegap-version' value='cli-6.0.0' />-->
<preference name="android-build-tool" value="ant" />
<preference name="orientation" value="default" /> <!-- all: default means both landscape and portrait are enabled -->
<preference name="target-device" value="universal" /> <!-- all: possible values handset, tablet, or universal -->
<preference name="fullscreen" value="true" /> <!-- all: hides the status bar at the top of the screen -->
<preference name="webviewbounce" value="true" /> <!-- ios: control whether the screen 'bounces' when scrolled beyond the top -->
<preference name="prerendered-icon" value="true" /> <!-- ios: if icon is prerendered, iOS will not apply it's gloss to the app's icon on the user's home screen -->
<preference name="stay-in-webview" value="false" /> <!-- ios: external links should open in the default browser, 'true' would use the webview the app lives in -->
<preference name="ios-statusbarstyle" value="black-opaque" /> <!-- ios: black-translucent will appear black because the PhoneGap webview doesn't go beneath the status bar -->
<preference name="detect-data-types" value="true" /> <!-- ios: controls whether data types (such as phone no. and dates) are automatically turned into links by the system -->
<preference name="exit-on-suspend" value="false" /> <!-- ios: if set to true, app will terminate when home button is pressed -->
<preference name="show-splash-screen-spinner" value="true" /> <!-- ios: if set to false, the spinner won't appear on the splash screen during app loading -->
<preference name="auto-hide-splash-screen" value="true" /> <!-- ios: if set to false, the splash screen must be hidden using a JavaScript API -->
<preference name="disable-cursor" value="false" /> <!-- blackberry: prevents a mouse-icon/cursor from being displayed on the app -->
<preference name="android-installLocation" value="auto" /> <!-- android: app install location. 'auto' will choose. 'internalOnly' is device memory. 'preferExternal' is SDCard. -->
<!--
Define a specific version of PhoneGap to build into your app.
<preference name="phonegap-version" value="3.5.0" />
-->
<!-- Plugins -->
<!-- Core plugins -->
<gap:plugin name="org.apache.cordova.battery-status" />
<gap:plugin name="org.apache.cordova.camera" />
<gap:plugin name="org.apache.cordova.media-capture" />
<gap:plugin name="org.apache.cordova.console" />
<gap:plugin name="org.apache.cordova.contacts" />
<gap:plugin name="org.apache.cordova.device" />
<gap:plugin name="org.apache.cordova.device-motion" />
<gap:plugin name="org.apache.cordova.device-orientation" />
<gap:plugin name="org.apache.cordova.dialogs" />
<gap:plugin name="org.apache.cordova.file" />
<gap:plugin name="org.apache.cordova.file-transfer" />
<gap:plugin name="org.apache.cordova.geolocation" />
<gap:plugin name="org.apache.cordova.globalization" />
<gap:plugin name="org.apache.cordova.inappbrowser" />
<gap:plugin name="org.apache.cordova.media" />
<gap:plugin name="org.apache.cordova.network-information" />
<gap:plugin name="org.apache.cordova.splashscreen" />
<gap:plugin name="org.apache.cordova.vibration" />
<!-- Define app splash screen for each platform. -->
<gap:splash src="res/screen/android/screen-ldpi-portrait.png" gap:platform="android" gap:qualifier="port-ldpi" />
<gap:splash src="res/screen/android/screen-mdpi-portrait.png" gap:platform="android" gap:qualifier="port-mdpi" />
<gap:splash src="res/screen/android/screen-hdpi-portrait.png" gap:platform="android" gap:qualifier="port-hdpi" />
<gap:splash src="res/screen/android/screen-xhdpi-portrait.png" gap:platform="android" gap:qualifier="port-xhdpi" />
<gap:splash src="res/screen/blackberry/screen-225.png" gap:platform="blackberry" />
<gap:splash src="res/screen/ios/screen-iphone-portrait.png" gap:platform="ios" width="320" height="480" />
<gap:splash src="res/screen/ios/screen-iphone-portrait-2x.png" gap:platform="ios" width="640" height="960" />
<gap:splash src="res/screen/ios/screen-iphone-portrait-568h-2x.png" gap:platform="ios" width="640" height="1136" />
<gap:splash src="res/screen/ios/screen-ipad-portrait.png" gap:platform="ios" width="768" height="1024" />
<gap:splash src="res/screen/ios/screen-ipad-landscape.png" gap:platform="ios" width="1024" height="768" />
<gap:splash src="res/screen/windows-phone/screen-portrait.jpg" gap:platform="winphone" />
<gap:plugin name="cordova-plugin-geolocation" source="npm" />
<gap:config-file platform="ios" parent="CFBundleShortVersionString">
<string>100</string>
</gap:config-file>
<gap:plugin name="cordova-plugin-device" source="npm"/>
<gap:plugin name="cordova-plugin-file" source="npm"/>
<gap:plugin name="cordova-plugin-media" source="npm"/>
<gap:plugin name="cordova-plugin-splashscreen" source="npm"/>
<gap:plugin name="cordova-plugin-x-socialsharing" source="npm"/>
<gap:plugin name="cordova-plugin-admobpro" source="npm" spec="2.9.6"/>
<gap:plugin name="cordova-plugin-whitelist" source="npm"/>
<allow-navigation href="*"/>
<allow-intent href="*"/>
<!--<access origin="*"/>-->
<access origin="*" subdomains="true" />
<access subdomains='true' origin='*' />
<!--<platform name="android">-->
<!--<allow-intent href="market:*" />-->
<!--</platform>-->
<!--<platform name="ios">-->
<!--<allow-intent href="itms:*" />-->
<!--<allow-intent href="itms-apps:*" />-->
<!--</platform>-->
有人知道我的代码有什么问题吗?那是服务器错误上的 ssl 证书吗?
你可以这样试试
<access origin = "*" />
<allow-navigation href="https://*/*" />
我不确定,但也许全局“*”只能在 http 上。
我创建了 rest api wchich 只包含 html+css+js 文件。 我有简单的功能登录 wchich 通过 json 获取数据。 当我 运行 我的服务器上的这个应用程序出现 ajax 错误:状态就绪 0,状态 0 但是当我 运行 此代码在不同端口的 http 上时,它可以正常工作。 我使用 http 和 https url 从互联网上随机检查 json 个文件: 1. HTTP - http://jsonplaceholder.typicode.com/posts?userId=1 2. https - https://api.github.com/users/mralexgray/repos 它工作正常
这里是我的 js 函数,它调用按钮单击文档就绪:
function log_in() {
$.ajax({
type: 'GET',
async: true,
crossDomain: true,
/*url: "http://jsonplaceholder.typicode.com/posts?userId=1",*/
/*url: "https://api.github.com/users/mralexgray/repos",*/ /*na debug i relese dziala*/
url:"https://system.fastdata.com.pl:4567/apps/leadinfo/f/json.txt",
/*url: "https://system.fastdata.com.pl:4569/apps/x/y/json.txt",*/
data: {},
beforeSend: load_start(),
success: function (data) {
window.test = data;
console.log("autoryzowano");
console.log(data);
$("#login_error").append("tak", data[0]);
$("#login_error").css("display", "block");
$("#password").val('');
$("#username").val('');
$("#contact_info_load").remove();
},
error: function (xhr,err) {
console.log("nie autoryzowano");
$("#login_error").append("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
$("#login_error").append("responseText: "+xhr.responseText);
$("#login_error").css("display", "block");
$("#password").val('');
$("#username").val('');
$("#contact_info_load").remove();
}
});
}
这是我的 config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- config.xml reference: https://build.phonegap.com/docs/config-xml -->
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "Lead Info"
version = "1.0.0">
<name>LEADInfo</name>
<description>
</description>
<author >
FASTDATA Team
</author>
<icon src="fa-cogs.png" />
<!--
If you do not want any permissions to be added to your app, add the
following tag to your config.xml; you will still have the INTERNET
permission on your app, which PhoneGap requires.
-->
<preference name='phonegap-version' value='cli-5.2.0' />
<!--<preference name='phonegap-version' value='cli-6.0.0' />-->
<preference name="android-build-tool" value="ant" />
<preference name="orientation" value="default" /> <!-- all: default means both landscape and portrait are enabled -->
<preference name="target-device" value="universal" /> <!-- all: possible values handset, tablet, or universal -->
<preference name="fullscreen" value="true" /> <!-- all: hides the status bar at the top of the screen -->
<preference name="webviewbounce" value="true" /> <!-- ios: control whether the screen 'bounces' when scrolled beyond the top -->
<preference name="prerendered-icon" value="true" /> <!-- ios: if icon is prerendered, iOS will not apply it's gloss to the app's icon on the user's home screen -->
<preference name="stay-in-webview" value="false" /> <!-- ios: external links should open in the default browser, 'true' would use the webview the app lives in -->
<preference name="ios-statusbarstyle" value="black-opaque" /> <!-- ios: black-translucent will appear black because the PhoneGap webview doesn't go beneath the status bar -->
<preference name="detect-data-types" value="true" /> <!-- ios: controls whether data types (such as phone no. and dates) are automatically turned into links by the system -->
<preference name="exit-on-suspend" value="false" /> <!-- ios: if set to true, app will terminate when home button is pressed -->
<preference name="show-splash-screen-spinner" value="true" /> <!-- ios: if set to false, the spinner won't appear on the splash screen during app loading -->
<preference name="auto-hide-splash-screen" value="true" /> <!-- ios: if set to false, the splash screen must be hidden using a JavaScript API -->
<preference name="disable-cursor" value="false" /> <!-- blackberry: prevents a mouse-icon/cursor from being displayed on the app -->
<preference name="android-installLocation" value="auto" /> <!-- android: app install location. 'auto' will choose. 'internalOnly' is device memory. 'preferExternal' is SDCard. -->
<!--
Define a specific version of PhoneGap to build into your app.
<preference name="phonegap-version" value="3.5.0" />
-->
<!-- Plugins -->
<!-- Core plugins -->
<gap:plugin name="org.apache.cordova.battery-status" />
<gap:plugin name="org.apache.cordova.camera" />
<gap:plugin name="org.apache.cordova.media-capture" />
<gap:plugin name="org.apache.cordova.console" />
<gap:plugin name="org.apache.cordova.contacts" />
<gap:plugin name="org.apache.cordova.device" />
<gap:plugin name="org.apache.cordova.device-motion" />
<gap:plugin name="org.apache.cordova.device-orientation" />
<gap:plugin name="org.apache.cordova.dialogs" />
<gap:plugin name="org.apache.cordova.file" />
<gap:plugin name="org.apache.cordova.file-transfer" />
<gap:plugin name="org.apache.cordova.geolocation" />
<gap:plugin name="org.apache.cordova.globalization" />
<gap:plugin name="org.apache.cordova.inappbrowser" />
<gap:plugin name="org.apache.cordova.media" />
<gap:plugin name="org.apache.cordova.network-information" />
<gap:plugin name="org.apache.cordova.splashscreen" />
<gap:plugin name="org.apache.cordova.vibration" />
<!-- Define app splash screen for each platform. -->
<gap:splash src="res/screen/android/screen-ldpi-portrait.png" gap:platform="android" gap:qualifier="port-ldpi" />
<gap:splash src="res/screen/android/screen-mdpi-portrait.png" gap:platform="android" gap:qualifier="port-mdpi" />
<gap:splash src="res/screen/android/screen-hdpi-portrait.png" gap:platform="android" gap:qualifier="port-hdpi" />
<gap:splash src="res/screen/android/screen-xhdpi-portrait.png" gap:platform="android" gap:qualifier="port-xhdpi" />
<gap:splash src="res/screen/blackberry/screen-225.png" gap:platform="blackberry" />
<gap:splash src="res/screen/ios/screen-iphone-portrait.png" gap:platform="ios" width="320" height="480" />
<gap:splash src="res/screen/ios/screen-iphone-portrait-2x.png" gap:platform="ios" width="640" height="960" />
<gap:splash src="res/screen/ios/screen-iphone-portrait-568h-2x.png" gap:platform="ios" width="640" height="1136" />
<gap:splash src="res/screen/ios/screen-ipad-portrait.png" gap:platform="ios" width="768" height="1024" />
<gap:splash src="res/screen/ios/screen-ipad-landscape.png" gap:platform="ios" width="1024" height="768" />
<gap:splash src="res/screen/windows-phone/screen-portrait.jpg" gap:platform="winphone" />
<gap:plugin name="cordova-plugin-geolocation" source="npm" />
<gap:config-file platform="ios" parent="CFBundleShortVersionString">
<string>100</string>
</gap:config-file>
<gap:plugin name="cordova-plugin-device" source="npm"/>
<gap:plugin name="cordova-plugin-file" source="npm"/>
<gap:plugin name="cordova-plugin-media" source="npm"/>
<gap:plugin name="cordova-plugin-splashscreen" source="npm"/>
<gap:plugin name="cordova-plugin-x-socialsharing" source="npm"/>
<gap:plugin name="cordova-plugin-admobpro" source="npm" spec="2.9.6"/>
<gap:plugin name="cordova-plugin-whitelist" source="npm"/>
<allow-navigation href="*"/>
<allow-intent href="*"/>
<!--<access origin="*"/>-->
<access origin="*" subdomains="true" />
<access subdomains='true' origin='*' />
<!--<platform name="android">-->
<!--<allow-intent href="market:*" />-->
<!--</platform>-->
<!--<platform name="ios">-->
<!--<allow-intent href="itms:*" />-->
<!--<allow-intent href="itms-apps:*" />-->
<!--</platform>-->
有人知道我的代码有什么问题吗?那是服务器错误上的 ssl 证书吗?
你可以这样试试
<access origin = "*" />
<allow-navigation href="https://*/*" />
我不确定,但也许全局“*”只能在 http 上。