#ios #cordova #vue-resource
Вопрос:
Я вызываю API из приложения Cordova (Monaca), используя Vue.js. Код не зависит от платформы и хорошо работает с Android и предварительным просмотром браузера. Соответствующая часть просто вызывает this.$http.delete(url, config)
и регистрирует ответ. this.$http
происходит от https://github.com/pagekit/vue-resource.
На iOS я получаю это, когда регистрирую ответ:
{
"url": "https://domain.whatever?KEY=12345amp;receipt_id=12345",
"ok": false,
"status": 0,
"statusText": "",
"headers": {
"map": {
"": [
""
]
}
},
"body": "",
"bodyText": ""
}
Тот же вызов на Android дает такой результат:
{
"url": "https://domain.whatever?KEY=12345amp;receipt_id=12345",
"ok": true,
"status": 200,
"statusText": "OK",
"headers": {
"map": {
"connection": [
"Keep-Alive"
],
"content-encoding": [
"gzip"
],
"content-length": [
"17"
],
"content-type": [
"application/json"
],
"date": [
"Mon, 12 Apr 2021 12:51:56 GMT"
],
"keep-alive": [
"timeout=5, max=100"
],
"server": [
"Apache"
],
"vary": [
"Accept-Encoding"
]
}
},
"body": {
"status": "OK"
},
"bodyText": "{"status": "OK"}"
}
(Журналы слегка редактируются, чтобы удалить личные данные, и имеют отступы для удобства чтения.)
Чем можно объяснить сбой с iOS? Существует ли какой-то фильтр по умолчанию, применяемый iOS для блокировки HTTP-запросов на УДАЛЕНИЕ? Запросы на отправку и ПОЛУЧЕНИЕ, похоже, ведут себя согласованно на всех мобильных платформах.
Комментарии:
1. это только УДАЛЕНИЕ, которое не удается ? Занимаетесь почтовой работой ?
2. Да @Эрик. Только УДАЛИТЬ.
Ответ №1:
По умолчанию iOS блокирует небезопасные HTTP — запросы:
https://developer.apple.com/documentation/security/preventing_insecure_network_connections
Проверьте раздел Настройка исключений Только при необходимости; Предпочитайте Исправления сервера, чтобы узнать, как вы добавляете переопределение этого поведения.
Комментарии:
1. Спасибо, это проницательно! Все соединения являются HTTPS, хотя есть ли какая-либо причина, по которой запрос на удаление может быть заблокирован, а запрос на ПОЛУЧЕНИЕ будет регулярно проходить?
2. извините, я пропустил, что ваши запросы являются HTTPS. Не уверен, что это ваш случай, но была ошибка, влияющая на WKWebView в iOS: developer.apple.com/forums/thread/653662 Недостаточно установить значение ‘Access-Control-Allow-Origin’ в’*’, вы должны установить его в то же значение, что и заголовок запроса «Origin».
3. Это может быть! Все еще нелегко выяснить, является ли это виновником, потому что я погребен под огромным количеством фреймворков, библиотек и т. Д., И нелегко выяснить, какая фактическая конфигурация применяется.