Форум программистов, компьютерный форум, киберфорум
JavaScript: Angular 2, AngularJS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 4
Регистрация: 03.09.2014
Сообщений: 10
1

$http С некоторых url запрос не проходит

05.11.2014, 21:27. Показов 1805. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я пытаюсь получить запрос с удаленного сервера.

С некоторых url все работает нормально. Например

app.js
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
var app = angular.module('app', ['app.angularGit']); 
 
app.controller('MainController', function($scope, AngularGit) {
    var param = {category: 'commits', sha: '0c19482d033f592fb9f341187c0a5d2e313e79cc'}
    $scope.benefit = AngularGit.get(param)
    console.log(AngularGit.get(param))
});
 
angular.module ('app.angularGit', ['ngResource'])
    .factory('AngularGit', function($resource) {
        return $resource('https://api.github.com/repos/angular/angular.js/:category/:sha')    
        //return $resource('https://routingnumbers.herokuapp.com/api/data.json?rn=1')    
    })
html.js
Javascript
1
2
3
4
5
6
7
8
9
10
<html ng-app="app">
    <body>
        <div ng-controller="MainController">
        {{benefit}}  
        </div>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.min.js"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular-resource.min.js"></script>
        <script type="text/javascript" src="app.js"></script>
    </body>
</html>
но если изменить url например на https://routingnumbers.herokua... .json?rn=1
в консоле появляется надпись

HTML5
1
No 'Access-Control-Allow-Origin' header is present on the requested resource.
если использовать jsonp - то же самое, с некоторых url все работает нормально
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.2/angular.min.js"></script>
    <script>
    var countryApp = angular.module('countryApp', []);  
    countryApp.controller('CountryCtrl', function ($scope, $http){  
        var url = 'https://api.github.com/repos/angular/angular.js/commits/0c19482d033f592fb9f341187c0a5d2e313e79cc?callback=JSON_CALLBACK';  
        $http.jsonp(url)
            .success(function(data) {  
                $scope.blog = data;
                $scope.test = 'Test';                
            })
            .error(function (data, status, headers, config) {
                alert("Dang It!");
            }); 
    });    
    </script>
  </head>   
  <body ng-app="countryApp">  
    <div ng-controller="CountryCtrl">
    {{test}}<br/>  
    </div>
  </body>
но если изменить url например на https://routingnumbers.herokua... .json?rn=1
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.2/angular.min.js"></script>
    <script>
    var countryApp = angular.module('countryApp', []);  
    countryApp.controller('CountryCtrl', function ($scope, $http){  
        //var url = 'https://api.github.com/repos/angular/angular.js/commits/0c19482d033f592fb9f341187c0a5d2e313e79cc?callback=JSON_CALLBACK';  
        var url = 'https://routingnumbers.herokuapp.com/api/data.json?rn=1&callback=JSON_CALLBACK';  
        $http.jsonp(url)
            .success(function(data) {  
                $scope.blog = data;
                $scope.test = 'Test';                
            })
            .error(function (data, status, headers, config) {
                alert("Dang It!");
            }); 
    });    
    </script>
  </head>   
  <body ng-app="countryApp">  
    <div ng-controller="CountryCtrl">
    {{test}}<br/>  
    </div>
  </body>
то в chrom dev Network JSON появляется но без префикса angular.callbacks._0({
Javascript
1
{"rn": "1?callback=angular.callbacks._0", "message": "Routing numbers are 9 digits", "code": 400}

Может быть поможет настройка через CORS?
Я пытаюсь настроить через $httpProvider но без особого успеха.
Javascript
1
2
3
//countryApp.config(function($httpProvider){
    //    $httpProvider.defaults.headers.common['Access-Control-Allow-Origin'];
    //});
Добавлено через 17 минут
У меня, как новичка нет возможности редактировать

Я использовала два парамерта в запросе
не валидный https://routingnumbers.herokua... .json?rn=1
валидный https://routingnumbers.herokua... =071000013

не в том не в другом случае не работает и не получаем ответ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2014, 21:27
Ответы с готовыми решениями:

Простой сервлет HTTP Status 405 - HTTP method GET is not supported by this URL
Здравствуйте,начал изучение сервлетов.Делал все последовательно как в примере...

HTTP запрос через Apache HTTP Client ничего не возвращает
У меня есть один сайт. Простой сайт на php. И есть второй сайт, где используется java на JBoss. Я...

Даны 2 запроса. Нужно Если 1 запрос получает результат (проходит) True то выполнить 2 запрос
День добрый. Подскажите как реализовать несложное условие. Даны 2 запроса. Нужно Если 1 запрос...

Запрос через http - HTTP Error 400
Добрый день Есть запрос, который хотим отправлять через http ВЫБРАТЬ...

6
413 / 378 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
05.11.2014, 21:36 2
_Elena, CORS настраивается на сервере
не нужно пытаться прописать Access-Control-Allow-Origin на клиенте

когда нет доступа к серверу и невозможно прописать нужные хедеры, используйте jsonp

если вам приходит ответ с кодом 400
JSON
1
{"rn": "1?callback=angular.callbacks._0", "message": "Routing numbers are 9 digits", "code": 400}
это как правило означает некорректный запрос
т.е. тут проблема скорее всего не в доступе, а в том что запрос в принципе не верно сформирован для этого API

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

JSON
1
{"new_routing_number": "000000000", "customer_name": "JPMORGAN CHASE BANK, NA", "institution_status_code": "1", "city": "BELLEVILLE", "code": 200, "office_code": "O", "routing_number": "071000013", "zip": "48111", "record_type_code": "1", "address": "9000 HAGGERTY- MI 1-8205", "data_view_code": "1", "state": "MI", "rn": "071000013", "telephone": "800-677-7477", "change_date": "012111", "message": "OK"}
он вам тоже не по нраву?
0
1 / 1 / 4
Регистрация: 03.09.2014
Сообщений: 10
05.11.2014, 22:13  [ТС] 3
Как получить доступ в этому ответу, который мы видем в Network?
мы не получаем success

Javascript
1
2
3
$http.jsonp(url)
            .success(function(data) {  
                $scope.blog = data;
Я использовала JSONP (посмотрите на пример 2)

1. он возвращает ошибку

Uncaught SyntaxError: Unexpected token : routingnumbers.herokuapp.com/api/data.json?rn=071000013&callback=angular.callbacks._0:1

2. network для https://routingnumbers.herokua... N_CALLBACK
возвращает JSON без angular префикса

3. в ошибке возвращается: data - undefined; status -0;
.error(function (data, status, headers, config) {
alert("Dang It!");
console.log(data);
console.log(status);
console.log(headers);
console.log(config);
});


Javascript
1
2
3
4
undefined Example_25_url_Get.html:24
0 Example_25_url_Get.html:25
function (c){a||(a=jc(b));return c?a[v(c)]||null:a} Example_25_url_Get.html:26
Object {transformRequest: Array[1], transformResponse: Array[1], method: "JSONP", url: "https://routingnumbers.herokuapp.com/api/data.json?rn=071000013&callback=JSON_CALLBACK", headers: Object}headers: ObjectAccept: "application/json, text/plain, */*"__proto__: Objectmethod: "JSONP"transformRequest: Array[1]0: function (a){return X(a)&&"[object File]"!==Ya.apply(a)?oa(a):a}length: 1__proto__: Array[0]transformResponse: Array[1]0: function (d){B(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=Tb(d)));return d}length: 1__proto__: Array[0]url: "https://routingnumbers.herokuapp.com/api/data.json?rn=071000013&callback=JSON_CALLBACK"__proto__: Object
0
413 / 378 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
06.11.2014, 10:18 4
_Elena, вы понимаете что сервер должен поддерживать jsonp, и сам оборачивать json ответ в ф-цию которая передана параметром callback?
ваш сервер поддерживает jsonp?
0
1 / 1 / 4
Регистрация: 03.09.2014
Сообщений: 10
06.11.2014, 19:11  [ТС] 5
Переформлирую вопрос.

Как работать с запросом, который скорее всего не поддерживает JSONP (как было показано на примере 2), но дает ответ с правильным JSON без оберкти angular.

Доступа с энд пойнт нет. Я могу работать только на клиентской стороне.


Как получить доступ в этому ответу, который мы видем в Network?
0
413 / 378 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
07.11.2014, 12:32 6
_Elena,
именно в этом и заключается смысл кроссдоменной политики безопасности
если бы существовал способ обойти ее без позволения сервера, то в ней просто не было бы смысла
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
07.11.2014, 13:53 7
Можно использовать свой прокси для таких обращений. Т. е. запрос посылается на твой сервер, там пересылается на нужный тебе, а результат прокидывается обратно.
0
07.11.2014, 13:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2014, 13:53
Помогаю со студенческими работами здесь

Как в Yii 2 изменить URl с http://localhost/index.php?r=site%2Findex на http://localhost/index ?
Очень нужно нормально розставить пути ,делал по видео выдало ошибку.На каждой странице ...

Скрип не копирует url некоторых картинок
Спасите, помогите ))) Скрипт по ctrl+ mouse right click копирует ссылку на картинку. Но...

Мониторинг сети, и замена данных от некоторых URL
Мне нужно как-то на C++ написать программу, которая будет на компьютере отлавливать все соединения...

Не удается подключить css и js при некоторых url
Добрый вечир.Проблема такая: Если вводить url так 'site' или так 'site/category, то все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru