6

ファイルのソースを取得してJSONP内にラップしたいと思います。

たとえば、自分が所有していないホストから、pets.txtをテキストとして取得したいと考えています。クライアント側の JavaScript だけを使用してそれを実現したいと考えています。

何でもJSONPに変換できるオンラインサービスを探しています。


YQL

Yahoo クエリ言語はその 1 つです。

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 を尊重していますrobots.txtでブロックされているため、http://userscripts.org/scripts/source/62706.user.jsを取得できません。

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

"forbidden":"ドメインのrobots.txtは、URLのクロールを許可しません: http://userscripts.org/scripts/source/62706.user.js "


だから私は別の解決策を探しています。

4

4 に答える 4

5

jsonpwrapper.comを構築しました。

YQL より不安定で遅いですが、robots.txt は気にしません。

于 2010-01-26T18:52:36.063 に答える
0

のののの。いいえ、お願いします。番号。それはJSONPではなく、より多くのjavascriptを含むパラメータとしてオブジェクトを使用して関数を実行するjavascriptです。ああ!

これは単なる 1 つのオブジェクトであるため、JSON です。

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

これは、関数を介して渡される 1 つのオブジェクトであるため、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"});

これらすべてのセミコロンとバックスラッシュを見てください! 私はこの種のものから悪夢を見ます。これは、必要以上に (そしてそうあるべきです!) 複雑なので、下手に書かれた Lisp マクロのようなものです。grab代わりに、コードで呼び出される関数を定義します。

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

次に、JSONP を使用してサーバーに戻ります。

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

Web ページの実行方法をサーバーに決定させない代わりに、Web ページの実行方法をWeb ページに決定させ、サーバーに空白を埋めさせます。

これを行うオンラインサービスは?私は何も知りません、ごめんなさい

于 2010-01-26T19:27:41.147 に答える
-2

ここで何をしようとしているのかはわかりませんが、このようなものは誰も使用しません。サービスが常に正常に実行され、予期される JavaScript コードが出力されるとは誰も信じません。人々が Yahoo を信頼しているが、彼らはあなたを信頼していないので、Yahoo がそうしていることがわかります。

于 2010-01-26T19:10:11.777 に答える