splincodewd
@splincodewd
Developer

Как получить json данные на localhost?

var HttpServer = function(){
        this.localhost = "http://95.165.159.193/blackbox/service.svc/";
        this.proccessget = function(){

            $.getJSON( this.localhost + "processes/get", function( data ) {
              alert(data)
            });

        }
    };

    var service = new HttpServer();


Сайт запускаю на localhost:8080
Сторонний сервис запущен по адресу 95.165.159.193 и отдает json

Пытался подключится, выполнив функцию service.proccessget()
Однако выдает ошибку, что делать?

XMLHttpRequest cannot load http://95.165.159.193/blackbox/service.svc/processes/get. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.


Если использовать jsonp, то выдает ошибку синтаксиса у тела ответа
var HttpServer = function(){
        this.localhost = "http://95.165.159.193/blackbox/service.svc/";
        this.proccessget = function(){

            $.ajax({
                url: this.localhost + "processes/get",
                crossDomain: true,
                dataType: 'jsonp',
                success: function( data ) {
                    alert(data)
                }
            });

        }
    };

    var service = new HttpServer();


get?callback=jQuery2110606…_1468226898915&_=1468226898916:1 Uncaught SyntaxError: Unexpected token :

ec3a19e5bfbb4755a98560f6ea4be21c.png

95.165.159.193 - это не мой сервер
  • Вопрос задан
  • 1134 просмотра
Решения вопроса 3
miraage
@miraage
Старый прогер
Прочитайте про основы CORS.
Если это Ваш сервис (который по IP 95.165.159.193) - добавьте соответствующие заголовки.
Иначе, либо jsonp, либо проксировать запрос через свой бэкенд.
Ответ написан
qonand
@qonand
Software Engineer
Вы делаете кросс-доменный запрос, браузер его блокирует. Для корректной работы сервер должен возвращать корректный заголовок.
Более подробно - смотрите CORS
Ответ написан
@fetis26
Ну, за фронтенд!
Для тестирования можно воспользоваться расширениями, которые добавляют соотв CORS заголовки в ответ уже в браузере. Например, github.com/chrisdeely/ForceCORS

Для продакшена такой вариант естественно не пойдет. И если оба приложения будут крутиться на разных доменах, то вам понадобится либо заголовки добавить на сервере, либо делать прокси.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы