別のドメインでホストされているHTMLをロードするにはどうすればよいですか?
JavaScriptを使用していて、外部HTMLを解析できるブックマークレットを作成したいと思います。
私は何時間も無駄にグーグルしてきました...
別のドメインでホストされているHTMLをロードするにはどうすればよいですか?
JavaScriptを使用していて、外部HTMLを解析できるブックマークレットを作成したいと思います。
私は何時間も無駄にグーグルしてきました...
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関数に注意してください。
あなたが他のページを所有していない場合、それは非常に難しいでしょう。
実際、javascriptで別のドメインにリクエストを送信することはできません。あなたができる唯一のことは、別のドメインからスクリプトをロードすることです:
<script type="text/javascript" src="http://otherdomain.com/script.js"></script>
これの目的が他のドメインからデータをロードすることであり、(私が言ったように)あなたが他のサイトを所有している場合、script.jsファイルを作成できます。これにより、元のサイトに必要なデータがロードされます。
これはデリケートなことであり、スクリプトに何が含まれるかを知っている場合にのみ実行する必要があることを忘れないでください。