Steam Web API: получение инвентаря CSGO/CrossDomainRequest

У меня возникают проблемы с отправкой ajax-запроса с моего локального хоста на http://steamcommunity.com/profiles/{steamid }/инвентарь/json/730/2

Похоже, проблема в том, что у них не включены заголовки CORS, поэтому мне приходится использовать jsonp. Поскольку запрос GET возвращает json, но моя функция ajax ожидает json-p, я получаю сообщение об ошибке:

Uncaught SyntaxError: Unexpected token :
2?callback=jQuery22005740937136579305_1452887017109&_=1452887017110:1 

Мне нужен этот ресурс, но я не знаю, как обойти это. Я просмотрел SO, но не нашел ничего, что конкретно соответствовало бы этой проблеме. Есть несколько сайтов, которые могут получить инвентарь конкретного пользователя, поэтому в некотором отношении это должно быть возможно.

Мой вызов Ajax

    $.ajax({
    url: "http://steamcommunity.com/profiles/76561198064153275/inventory/json/730/2",
    type: 'GET',
    dataType: 'jsonp',
    success: function(response) {
        console.log(response);
        if(response.error){
            alert(response.error_text);
        }else {
            console.log("SUCCESS!!");
        }
    }
});

person moon    schedule 15.01.2016    source источник
comment
я только что попытался добавить? callback =? я думаю, что это то же самое, что сделал бы jquery, и все еще не получил jsonp. Я также попытался установить тип содержимого моего запроса на application/javascript и application/jsonp и не получил jsonp. Я немного поиграл со Steam API и не уверен, что вы сможете его получить.   -  person ekill    schedule 15.01.2016


Ответы (1)


Я придумал обходной путь! Я использую django для своего веб-приложения, поэтому я попытался сделать запрос на стороне сервера.

Я установил библиотеку запросов через pip (библиотека: http://docs.python-requests.org/en/latest/)

В моем приложении django я сделал представление, которое будет вызываться моим запросом AJAX.

def get_steam_inv(request):
     user_steam_profile = SteamProfile.objects.get(brokerr_user_id = request.user.id)
     r = requests.get("http://steamcommunity.com/profiles/76561198064153275/inventory/json/730/2")
     return JsonResponse(r.json())

Затем мой запрос ajax для этого представления:

$.ajax({
    url: "/ajax_get_steam_inv/",
    type: 'GET',
        success: function(response) {
            console.log(response);
            // result = JSON.parse(response);
            if (response.error){
                alert(response.error_text);
            } else {
                console.log(response);
            }
        }
});

И теперь у меня есть данные, которые мне нужны!

person moon    schedule 15.01.2016