0

別のドメインのサーバーへの HTTP GET 要求に基づいてデータを表示する Javascript を作成しようとしています。私が読んだことから、これは SOP (Same Origin Policy) のためにトリッキーになっています。

snap.com の "Snap Shots" (Web ページのプレビュー) がどのように機能するのか興味があります。ページの例を次に示します: http://premshree.livejournal.com/66129.html

誰かがこれがどのように可能かを説明できますか? snap.com の「スナップ ショット」を有効にするには、ヘッダーに Javascript を追加するだけです。サンプル Web ページが SOP に違反しているようです。

4

2 に答える 2

1

Ian の回答に従って、JSONP を使用して SOP によって提示されたドメインの壁を越えて AJAX を取得できます。JSONP とは何ですか? これは、誰もが知っていて大好きな同じ JSON オブジェクトですが、次の関数でラップされています: JSON:

{
  prop1: "a",
  prop2: 7
}

JSONP:

myfunction(
{
  prop1: "a",
  prop2: 7
});
ご覧のとおり、JSON オブジェクトはパラメーターとしてmyfunction関数に渡されます。したがって、単純なタグを使用して別のドメインでホストされているスクリプト リソースにリンクし、そのリソースが JSONP データを返した場合、JSON オブジェクトを受け入れるscript関数を定義して、それを処理することができます。JQuery は、 getJSONメソッドmyfunctionを使用した JSONP Ajax 呼び出しをサポートしています。AJAX 呼び出しを行うのではなく、jQuery は、データを取得しようとしている URL を指すタグを挿入します。スクリプトが読み込まれると、コールバック関数が実行され、出来上がりです! - JSON データがあります。この手法には 3 つの前提条件があります。script

  1. データをリクエストしようとしているサービスは、JSON を返します (デフォルトで、またはパラメーターを使用したリクエストで)。
  2. このサービスは、JSON データをラップするコールバック関数を指定できるようにすることで、JSONP をサポートします。
  3. この外部ソースを信頼して、サイトでコードを実行できるようにします。
于 2009-02-05T19:00:04.067 に答える
1

「スナップ ショット」JavaScript は snap.com でホストされているため、snap.com のすべてのもの、つまりページ プレビューにアクセスできます。これは、実際には同一生成元ポリシーに従っているためです。ただし、livejournal.com のどのページに対しても呼び出しを行うことはできません。

お役に立てれば。

于 2009-01-26T14:21:51.207 に答える