$http.post передача данных с сервера
При передаче файла .json выдаёт такую ошибку
![]() $http.post('http://путь к .json файлу/', {headers:'Access-Control-Allow-Origin:*'}) .success(function(data, status, headers, config){ console.log('This is Data:',data,'\n\nThis is Status:',status,'\n\nThis is Headers:',headers,'\n\nThis is config:',config); $scope.cities = data; }). error(function(data, status, headers, config) { console.log('This is Data:',data,'\n\nThis is Status:',status,'\n\nThis is Headers:',headers,'\n\nThis is config:',config); }); }); Походу проблема в неправильной передачи заголовка |
Даже если сервер на другом языке, должно быть все понятно http://enable-cors.org/server_php.html
|
Попробовал,всё осталось так же.
|
$http.post('http://путь к .json файлу/', {headers:'Access-Control-Allow-Origin:*'})
поменял $http.get('http://путь к .json файлу/') Всё работает Спасибо! |
djan, вы наверное не читали документацию по post :)
В методе get вторым параметром идет config. А в методе post параметр config идет третьим параметром. Вторым передаётся список переменных для отправки на сервер. |
Читал документацию.
Проблема была не этом - а в отсутствии header("Access-Control-Allow-Origin: *") - на сервере. При передачи данных post с локального хранилища в таком виде(без {headers:'Access-Control-Allow-Origin:*'})- всё было нормально. |
разрешите апнуть тему. //Решено
Помогите, 2-й день бьюсь над переносом запросов приложения на реальный сервер.
Если все запросы на 1-м сервере - все нормально, но как только перенаправляю запросы на другой сервер - выдает ошибки. Но все по порядку: Проект запущен с http://localhost/ отправка запроса: var promise = $http.post('http://mixo.pl/app_index.php', {trig: "singin", login: $scope.activeLog.login, pass: $scope.activeLog.pass}) ; promise.then (ChangeLogin, ChangeError); обработчик РНР: <?php header('Access-Control-Allow-Origin: *'); $params = json_decode(trim(file_get_contents('php://input')), true); if (isset($params[trig])) { include ("inc/config_db.php"); if ($params[trig] == 'singin') { include ("inc/app_login.php"); } if ($params[trig] == 'new_valid') { include ("inc/app_new_valid.php"); } if ($params[trig] == 'new_done') { include ("inc/app_new_done.php"); } } ?> возвращает ошибку: XMLHttpRequest cannot load http://mixo.pl/app_index.php. Request header field Content-Type is not allowed by Access-Control-Allow-Headers. при этом headers: Object Accept: "application/json, text/plain, */*" Content-Type: "application/json;charset=utf-8" если добавляю в запрос Access-Control-Allow-Origin, не меняя РНР файла var promise = $http.post('http://mixo.pl/app_index.php', {trig: "singin", login: $scope.activeLog.login, pass: $scope.activeLog.pass}, {headers: {'Access-Control-Allow-Origin':'*'} } ; // <--- Добавлено в запрос promise.then (ChangeLogin, ChangeError); то получаю ошибку XMLHttpRequest cannot load http://mixo.pl/app_index.php. Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers. при этом headers: Object Accept: "application/json, text/plain, */*" Access-Control-Allow-Origin: "*" Content-Type: "application/json;charset=utf-8" Подскажите, плс, в какую сторону смотреть, ибо сам уже запутался полностью. добавление в РНР файл 3-х строчек решило проблему. <?php header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: Content-Type, X-Requested-With') ?> |
И снова здрасте.
Проблему решил, но разрешилась она только для ПК. На скомпилированном apk не работает, как отследить ошибку на андроиде я не знаю, но по коду вижу что идет обработка промизе как Error. Подскажите что делать ибо в растерянности. |
Часовой пояс GMT +3, время: 21:18. |