1

別のドメインでホストされているHTMLをロードするにはどうすればよいですか?

JavaScriptを使用していて、外部HTMLを解析できるブックマークレットを作成したいと思います。

私は何時間も無駄にグーグルしてきました...

4

3 に答える 3

5

JavaScriptはクロスドメインリクエストを行うことを許可されていません。これは大きなセキュリティリスクです。代わりに、サーバー上でスクリプトを実行し、JavaScript関数に結果を返すようにする必要があります。

たとえば、JavaScriptとPHPを使用していると仮定すると、次のように動作するようにアプリケーションを設定できます。

JavaScriptは、サーバー上にあるページ(またはスクリプト)に対してAjaxリクエストを開始します。必要なパラメータをこのページに渡します。次のコードは(簡潔にするために)jQueryに基づいていますが、原則はフレームワークに関係なく同じです。

var sParameters = " ... " // this is defined by you
$.ajax({
  url: 'your-server-side-code.php',
  processData: false,
  data: sParameters,
  success: function(sResponse) {
    // handle the response data however you want
  }
});

サーバー側のコードはリクエストに応答し、必要なパラメータをクロスドメインのウェブサイトに渡します。PHPのcURLライブラリはこれに適しています。

// very contrivuted cURL configuration for purposes of example...
$curl_connection = curl_init();
$str_url = "http://you-url.com";
curl_setopt($curl_connection, CURLOPT_URL, $str_url);
curl_setopt($curl_connection, CURLOPT_GET, 1);
// ... keep setting your options ...
$str_response = curl_exec($curl_connection);
curl_close($curl_connection);

クロスドメインWebサイトが応答すると、サーバー側のコードが応答を最初の要求にエコーバックできます。これはおそらく応答する前に検証する必要がありますが、これは単なる例です。

print_r($str_response);

次に、JavaScript応答ハンドラー関数は、着信応答データを解析できます。上記のJavaScriptコードの最初のブロックにあるsuccess関数に注意してください。

于 2009-07-17T14:19:12.907 に答える
0

あなたが他のページを所有していない場合、それは非常に難しいでしょう。

実際、javascriptで別のドメインにリクエストを送信することはできません。あなたができる唯一のことは、別のドメインからスクリプトをロードすることです:

<script type="text/javascript" src="http://otherdomain.com/script.js"></script>

これの目的が他のドメインからデータをロードすることであり、(私が言ったように)あなたが他のサイトを所有している場合、script.jsファイルを作成できます。これにより、元のサイトに必要なデータがロードされます。

これはデリケートなことであり、スクリプトに何が含まれるかを知っている場合にのみ実行する必要があることを忘れないでください。

于 2009-07-17T14:21:40.907 に答える
0

からクロスドメイン リクエストを行うことはできますがlocalhost、このコードをサーバーに展開する予定がある場合は機能しません。ブックマークレットを開発しているので、これができると思います。

リモート HTML を取得するには、AJAXを使用する必要があります。

jQueryライブラリは、このタスクをこのように簡単にします...

$.get("http://www.google.com", function(html) { alert(html); });
于 2009-07-17T14:32:15.550 に答える