2017-01-26 2 views
1

Я создал Кордова Android приложений, и я столкнулся этот вопрос:Кордова - Android запросы HTTPS сбой на 4G

Когда на 3G/4G, всякий раз, когда я пытаюсь сделать запрос к моему серверу я получаю ошибку :

ERR_TUNNEL_CONNECTION_FAILED. 

Когда я нахожусь в WIFI, все работает нормально. Этого не происходит на всех устройствах Android, я столкнулся с этой проблемой на Samsung Galaxy A5 (и некоторые другие андроиды).

Я обнаружил, что если мы используем HTTP вместо HTTPS, все в порядке.

Также согласно https://www.sslshopper.com/ssl-checker.html и https://www.digicert.com/help/ все, кажется, хорошо с нашим сертификатом SSL.

Как мы можем решить эту проблему?

+0

Проверьте настройки прокси-сервера. Если возможно, удалите прокси-сервер и повторите попытку. –

+0

вы внедрили платежный шлюз в своем приложении? –

+0

Что должен делать какой-либо платежный шлюз?Мы не используем внешние шлюзы для оплаты, просто покупка приложений для Android в – hyperN

ответ

1

Обычно это происходит потому, что ваш провайдер настройки прокси-сервера в устройстве. Попробуйте проверить текущую настройку APN и удалить прокси-сервер полей и порт.

Это также может быть вызвано, если вы используете порт, отличный от 443

+0

Спасибо за ответ, но мое приложение - приложение B2C с более чем 100k + активными пользователями, поэтому решение должно быть в приложении, я не могу полагаться на пользователей, чтобы настроить их прокси – hyperN

+0

Нет решение, которое вы можете реализовать в приложении, это влияет только на пользователей с прокси-набором, не все из них будут установлены, это зависит от поставщика. – jcesarmobile

+0

Но, к примеру, приложения, facebook и подобные приложения работают без проблем на этом устройстве, не должны ли они иметь такую ​​же проблему? – hyperN

0

Я думаю, что это проблема на вашем устройстве Android. Я исследовал об этом, и я рекомендую вам следовать these steps.

также то, что вы можете попробовать это установить cordova-whitelist-plugin и настроить ваш config.xml файл:

<allow-navigation href="*" /> 

Редактировать:

К вашему config.xml нужно добавить также :

<!-- Don't block any requests --> 
<access origin="*" /> 

Кроме того, вам необходимо включить следующие м ета тег к вашей HTML странице:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> 

This policy allows everything (eg CSS, AJAX, object, frame, media, etc) except that * CSS only from the same origin and inline styles, * scripts only from the same origin and inline styles, and eval()

+0

Спасибо за ваш ответ, но у меня есть плагин с белым списком, и я попытался добавить эту строку, но это не помогло. Также после этих шагов не помогает, потому что приложение активно используется более чем 100k людьми, поэтому мне нужно решение в appp – hyperN

+0

Я обновил свой ответ. Пожалуйста, проверьте его, и я надеюсь, что он вам поможет :) –

+0

Спасибо, но я не думаю, что это поможет, потому что у меня уже есть аналогичная строка: \t hyperN

0

Интересно, если вы обнаружили, что ваш ответ или нет, но все-таки хотите опубликовать ответ на другие ищут решения: Обратите внимание, что Кордова не разрешает вызовы https для серверов с ненадежным сертификатом ssl, установленным на них. Вы можете проигнорировать эту ошибку и продолжить, сделав небольшое изменение в файле cordova.

Open “\cordova\platforms\android\CordovaLib\src\org\apache\cordova\ CordovaWebViewClient.java”. In 'onReceivedSslError' method, comment the else part and add handler.proceed() instead.

0

Эти проблемы возникают с мобильным подключением к данным, поскольку точка доступа по умолчанию, которая поставляется с носителем, как правило, имеет прокси-сервер, который не позволит использовать туннелирование SSL. Все, что вам нужно сделать, - установить Proxy и Port на ничего.

Также необходимо использовать только порт 443 для HTTPS.

Смежные вопросы