Следующий код работает в моем приложении Ionic для iOS версии 9.3 ++, но НЕ для iOS 8.2:
$http({
method: 'POST',
url: 'https://example.com',
data: {username: username, password: password }
}).then(function(result) {
//I wish!
},function(error) {
//unfortunately we end up here for iOS 8.2, but not for 9.3 or greater
});
Я проверил, что обе версии получают данные POST на сервер, и сервер генерирует правильный ответ.
iOS 8.3 выдает ошибку:
Failed to load resource: The network connection was lost.
Я подозреваю какую-то проблему с настройками / разрешениями браузера / CORS, но не нашел решения на SO или Google.
Мой сервер (PHP) настроен для получения ajax-запросов:
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
}
//Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
}
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
header("Access-Control-Allow-Headers:
{$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
exit(0);
}
//processing code goes here and a proper $response is created
echo json_encode($response);
попробуйте добавить эту строку в ваш http-запрос
заголовки: {‘Content-Type’: ‘application / x-www-form-urlencoded’}
Других решений пока нет …