Intereting Posts

Ionic + Angular – Как избежать «404 Not Found (from cache)» после запроса POST?

этот вопрос отчасти указывает на мой предыдущий вопрос: состояние возврата Ionic + Angular POST request 404

Но я не смог найти рабочего решения.

Проблема следующая:

если я сделаю запрос от мобильного приложения, запущенного на устройстве, я всегда получаю ответ 404:

Request Method:POST Status Code:404 Not Found (from cache) Request Headersview source Accept:application/json, text/plain, */* Content-Type:text/plain Origin:file:// User-Agent:Mozilla/5.0 (Linux; Android 4.4.2; Lenovo Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 Request Payloadview source {,…} 

Но если я попробовал один и тот же запрос на рабочем столе с помощью плагина Postman в браузере Chrome, я всегда получаю ответ 200 с данными, которые мне нужны.

Я думал, что это проблема, вызванная методом Angular http, но в предыдущем посте я заметил, что это неверно.

Как я могу избежать этого, пожалуйста? Должен ли я устанавливать некоторые заголовки в HTML-приложении, во время запроса или на стороне сервера (PHP)?

Большое спасибо за любые советы.

РЕДАКТИРОВАТЬ:

Я также попытался установить кеш: false таким образом:

 $http({ method : 'POST', url : $scope.remoteUrl, data: postData, headers: headersData, cache: false, timeout: 10000 // success response }) 

Но без везения.

Многие люди это переживают .

Я просто столкнулся с той же проблемой. Кажется, это связано с новой политикой безопасности в новых версиях Кордовы.

Вот как я это решил:

Я установил плагин «Белый список» Кордовы :

 cordova plugin add cordova-plugin-whitelist 

Затем добавьте свою политику содержимого в свой index.html как метатег (используя собственный хост или «*» для принятия всех запросов):

 <meta http-equiv="Content-Security-Policy" content="default-src 'self' yourhost.com ws://localhost:35729 data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *;script-src 'self' localhost:35729 'unsafe-eval' 'unsafe-inline';"> 

default-src используется для общих запросов; хост ws://localhost:35729 используется для живой перезагрузки в ionic serve .

script-src используется для безопасного выполнения сценария

unsafe-inline и unsafe-eval необходимы для правильной работы углов.

data: gap: https://ssl.gstatic.com используется только для iOS.

self означает текущий узел файла index.html .

Вам нужно будет добавить свои собственные, чтобы ваши запросы работали. Не забудьте добавить протокол и порт, если они нестандартные

Вы можете пропустить метатег, если вы этого не хотите, но вы получите много предупреждений из плагина с белым списком.

Подробнее о том, как настроить это в readme плагина .

Затем перестройте свое приложение, и оно должно работать снова.

Если бы та же проблема, ничего не помогло, то я просто удалил плагин с белым списком:

 cordova plugin remove cordova-plugin-whitelist 

затем переустановил его

 cordova plugin add cordova-plugin-whitelist 

то это сработало

У меня была та же проблема, и я смог ее решить, добавив следующий плагин:

 ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git 

Через много часов я нашел одно решение, которое сработало: запустить cordova plugin add cordova-plugin-whitelist

В моем случае, я уже настроил config.xml и index.html по происхождению, как упоминалось здесь и в другом месте.

У меня была аналогичная проблема с знаком Firebase на моем устройстве Android, но я мог войти в браузер.

 cordova plugin remove cordova-plugin-whitelist cordova plugin add cordova-plugin-whitelist 

Используемые выше строки для устранения проблемы.