Онлайн-конвертер/оболочка JSONP

Я хочу получить исходный файл и поместить его в JSONP.

Например, я хочу получить pets.txt в виде текста с хоста, который мне не принадлежит. . Я хочу сделать это, используя только клиентский JavaScript.

Я ищу онлайн-сервис, который может конвертировать что угодно в JSONP.


YQL

Одним из них является Язык запросов Yahoo.

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D"http://elv1s.ru/x/pets.txt"&format=json&callback=grab

Это работает, если URL-адрес не заблокирован robots.txt. YQL уважает robots.txt. Я не могу получить http://userscripts.org/scripts/source/62706.user.js, потому что он заблокирован через robots.txt.

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D"http://userscripts.org/scripts/source/62706.user.js"&format=json&callback=grab

"запрещено": "robots.txt для домена запрещает сканирование URL-адреса: http://userscripts.org/scripts/source/62706.user.js"


Поэтому я ищу другие решения.


person NVI    schedule 25.01.2010    source источник
comment
Что значит нет такого jsonpwrapper.com?   -  person Luca Matteis    schedule 26.01.2010
comment
Я обновил вопрос. Надеюсь, теперь это звучит более разумно.   -  person NVI    schedule 26.01.2010
comment
Это дубликат моего вопроса, который, по утверждению Уилла, неконструктивен: Есть ли бесплатный прокси-сервер JSON, который поддерживает CORS или JSONP?   -  person hippietrail    schedule 02.06.2013
comment
возможный дубликат Есть ли бесплатный JSON прокси-сервер, поддерживающий CORS или JSONP?   -  person hippietrail    schedule 02.06.2013


Ответы (4)


Я создал jsonpwrapper.com.

Он нестабилен и медленнее, чем YQL, но ему наплевать на robots.txt.

person NVI    schedule 26.01.2010
comment
как только достаточное количество пользователей воспользуется вашей оболочкой, вы сойдете с ума и взломаете все сайты;)? - person Luca Matteis; 26.01.2010
comment
Я не мог заставить его работать с ресурсом JSON, для которого мне нужен был такой прокси: http://airportcode.riobard.com/airport/FRA?fmt=JSON - person hippietrail; 16.12.2011
comment
Срок действия вашего домена истек и его припарковали?? - person jacobq; 11.10.2012

Вот еще один, гораздо более быстрый, созданный на DigitalOcean и CloudFlare с использованием кэширования и др.: http://json2jsonp.com

person fevangelou    schedule 02.06.2013

Нет нет Нет Нет. Нет. Только пожалуйста; нет. Это не JSONP, это javascript, который выполняет функцию с объектом в качестве параметра, который содержит больше javascript. Ааа!

Это JSON, потому что это всего лишь один объект:

{
    'one': 1,
    'two': 2,
    'three':3
}

Это JSONP, потому что через функцию передается только один объект; если вы перейдете на http://somesite/get_some_object?jsonp=grab, сервер вернет:

grab({
    'one': 1,
    'two': 2,
    'three':3
});

Это вообще не JSON. Это просто Javascript:

alert("hello");

И это? Код Javascript, хранящийся внутри строки (ой!) внутри объекта, переданного функции, которая должна оценить строку (но это может быть, а может и нет):

grab({"body": "alert(\"Hello!\");\n"});

Посмотрите на все эти точки с запятой и обратную косую черту! Мне снятся кошмары от такого рода вещей. Это похоже на плохо написанный макрос на Лиспе, потому что он намного сложнее, чем должен (и должен!) быть. Вместо этого определите в коде функцию с именем grab:

function grab(message) {
    alert(message.body);
}

а затем используйте JSONP, чтобы вернуть сервер:

grab({body: "Hello!"});

Не позволяйте серверу решать, как запускать вашу веб-страницу. Вместо этого позвольте вашей веб-странице решать, как запускать веб-страницу, а сервер просто заполнит пробелы.

Что касается онлайн-сервиса, который делает это? Я не знаю ни одного, извините

person Michael    schedule 26.01.2010
comment
О, мой пример действительно плохой. Я заменил elv1s.ru/x/hello.js на elv1s.ru/x/hi.txt - person NVI; 26.01.2010
comment
О-о-о-о! Вы просто пытаетесь обернуть файл, а не больше javascript. Извините за эту подлую небольшую лекцию, теперь я ее вижу. - person Michael; 27.01.2010

Я не уверен, что вы пытаетесь здесь сделать, но никто не будет использовать что-то подобное. Никто не будет доверять вашему сервису, чтобы он всегда выполнялся должным образом и выдавал ожидаемый код JavaScript. Вы видите, что Yahoo делает это, потому что люди доверяют Yahoo, но они не будут доверять вам.

person Luca Matteis    schedule 26.01.2010
comment
Получите исходный код (github.com/NV/jsonpwrapper.com) и разместите его самостоятельно, если тебе нравится. - person NVI; 26.01.2010