jQuery $.getJSON из PHP-файла получить содержимое в steamcommunity JSON [закрыто]


Я пытаюсь использовать http://steamcommunity.com/inventory/XXXXXXXXXX/753/6 для извлечения элементов JSON.

Я не могу указать URL-адрес в своем $.getJson, потому что есть ошибка CORS « Access-Control-Allow-Origin ». Как я могу обойти это, если я не хочу разрешать CORS Я где-то читал, что можно использовать PHP file_get_contents для перенаправления файла json.

Сообщество Steam не работает с JSONP

var exercice = {

modules: {}
};

exercice.modules.ajax = (function () {

return {

    recupererJson: function () {
         initial= $.getJSON('proxy.php',function(data){
        })
            initial.done(function(donnes){
                var i = 0;

                $.each(donnes.descriptions,function(key,value){
                        $('tbody').append("<tr>");
                        $('tbody').append("<td>"+value.name+"</td>");
                        $('tbody').append("<td><img src=http://cdn.steamcommunity.com/economy/image/"+value.icon_url+" alt ="+value.name+"/></td>");
                        $('tbody').append("</tr>");


                    });
                    });
    },
    init: function () {
        exercice.modules.ajax.recupererJson();
    }
}})();

$(document).ready(function () {
exercice.modules.ajax.init();
});

Кто-нибудь может мне помочь?

Author: Kryze, 2017-06-01

1 answers

Если php.ini имеет allow_url_fopen=1 (http://php.net/manual/en/filesystem.configuration.php ), который должен быть по умолчанию, тогда вы можете создать такой php-файл:

<?php echo file_get_contents('http://steamcommunity.com/inventory/76561198033103987/753/6');

Или

<?php readfile('http://steamcommunity.com/inventory/76561198033103987/753/6');

В противном случае, если он отключен и вы не можете получить доступ к php.ini, но у вас включено расширение CURL, вы можете сделать это:

<?php
$ch = curl_init();
curl_setopt($ch, 'http://steamcommunity.com/inventory/76561198033103987/753/6');
curl_setopt($ch, CURLOPT_HEADER, 0);
echo curl_exec($ch);
curl_close($ch);

См. http://php.net/manual/en/function.curl-init.php

РЕДАКТИРОВАТЬ: Глядя на ваш код, мне кажется, что есть только один проблема здесь:

initial= $.getJSON('proxy.php',function(data){

Должно быть

initial= $.getJSON('http://example.com/proxy.php',function(data){

Вы должны использовать полные URL-адреса.

ПРАВКА2: Я попробовал этот код, и он отлично сработал для меня.

http://127.0.0.1/test.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script type="text/javascript">
        var exercice = {
            modules: {}
        };

        exercice.modules.ajax = (function () {

        return {

            recupererJson: function () {
                 initial= $.getJSON('http://127.0.0.1/proxy.php',function(data){
                })
                    initial.done(function(donnes){
                        var i = 0;

                        $.each(donnes.descriptions,function(key,value){
                                $('tbody').append("<tr>");
                                $('tbody').append("<td>"+value.name+"</td>");
                                $('tbody').append("<td><img src=http://cdn.steamcommunity.com/economy/image/"+value.icon_url+" alt ="+value.name+"/></td>");
                                $('tbody').append("</tr>");


                            });
                            });
            },
            init: function () {
                exercice.modules.ajax.recupererJson();
            }
        }})();

        $(document).ready(function () {
            exercice.modules.ajax.init();
        });
    </script>
</head>
<body>
    <table>
        <tbody>
        </tbody>
    </table>
</body>
</html>

http://127.0.0.1/proxy.php:

<?php
header("Content-Type: application/json; charset=utf-8");
header("Access-Control-Allow-Origin: *");
readfile('http://steamcommunity.com/inventory/76561198033103987/753/6');

Я добавил заголовок Content-Type, чтобы proxy.php сформировал бы более удобный для браузера. Также заголовок Access-Control-Allow-Origin: * должен препятствовать блокировке запроса ajax CORS, если вы откроете test.html использование URI файла file:///C:/www/test.html.

 1
Author: Viacheslav, 2017-06-02 07:30:24