JavaScript 内から外部 CGI を参照する

外部 CGI から結果を取ってきて、JavaScript の中でその結果をほげほげしたい。

とりあえず、「JavaScriptで外部サイトのファイルを取得するためのTips」というサイトを参考にして、CGI で吐出される結果を JavaScript 内に取り込んでくるところまでテストしてみた。

実際に JavaScript で外部のサーバを参照(CGI や PHP の結果を取得)しようとすると、自ドメインのサーバ以外は「クロスドメイン制約」というセキュリティ上の制限が発生する。要は、www.exsample.co.jp サーバで実行される JavaScript から www.exsample.com の CGI は参照できないってことね。
これはサブドメインでも制限を受けるので、www.exsample.co.jp から www2.exsample.co.jp を参照する場合もアウト。

で、JSONP とか使って自力でこの制限を回避するスクリプトを書くことは出来るが、けっこう複雑なものになるので、jquery.xdomainajax.js を使うのが便利とのこと。

#!/usr/bin/perl

@t = localtime();
$t[5] += 1900;
$t[4] += 1;

print "Content-type: text/plain; charset=UTF-8\n\n";
print "$t[5]/$t[4]/$t[3] $t[2]:$t[1]:$t[0] Now!";

# END

という CGI を、下記のように JavaScript から呼び、結果をアラート窓で表示するだけの処理をしてみた。

<!doctype html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>外部CGI呼び出し</title>
        <meta name="description" content="テストです">
        <meta name="viewport" content="width=device-width, initial-scale=1">

<script type=text/javascript src=https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js></script>
<script type=text/javascript src=https://github.com/jamespadolsey/jQuery-Plugins/raw/master/cross-domain-ajax/jquery.xdomainajax.js></script>

<script type=text/javascript>
uri = 'http://test.exsample.jp/cgi-bin/test.cgi';
$.get(uri, function(data) {
alert(data);
});
</script>

</head>
<body>
<p>Dummy</p>
</body>
</html>

結果はバッチリじゃん。

20140411_alert1.jpg

最初に実行した時は、ブラウザ下部に「安全な接続を確立しています」と出てけっこう結果が返ってくるまで待たされた。
二回目以降の実行ではサッと結果返ってくるようになったけどな。これは留意しておいたほうがいいかも。

トラックバック(0)

このブログ記事を参照しているブログ一覧: JavaScript 内から外部 CGI を参照する

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/2914

コメントする

このブログ記事について

このページは、shinodaが2014年4月11日 09:49に書いたブログ記事です。

ひとつ前のブログ記事は「Geolocation API の getCurrentPosition() メソッドの取得値を初期表示位置に」です。

次のブログ記事は「緯度・経度から2点間の直線距離を求める Perl プログラム」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら