これはおそらく単純な(一連の)質問ですが、頭を悩ませることはできません。
サイトでホストされている Web アプリから github api にアクセスしようとしています。これは一言で言えばコードです:
<!DOCTYPE html>
<html>
<head>
<style>p { color:red; }</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function () {
$.ajax( {url :'https://api.github.com/repos/janesconference/kievIIPlugins/commits', dataType: "json", cache: false, success: function (data, textStatus, jqXHR)
{
var lastCommitSha = data[0].sha;
$("p").text("Last commit SHA: " + lastCommitSha);
}
});
});
</script>
</head>
<body>
<p>Ajax request not (yet) executed.</p>
</body>
</html>
Dropbox アカウントにアップロードされたこのシンプルなページにブラウザを向けると、すべて問題ありません。代わりに、自分のサイトにアップロードされたこの単純なページをブラウザで指定すると、悪名高いAccess-Control-Allow-Origin
例外が発生します。
XMLHttpRequest cannot load https://api.github.com/repos/janesconference/kievIIPlugins/commits?_=1360060011783. Origin http://bitterspring.net is not allowed by Access-Control-Allow-Origin.
だから、質問:
- なぜ Dropbox で動作するのですか?
- CORS を使用すると、Web サイトでも機能することを理解しています。これは、
Access-Control-Allow-Origin: *.github.com
私の Apache 構成などを適用することの問題です。しかし、en.wiki から引用したように、
ただし、これはセキュリティが懸念される状況には適していない可能性があります
- Apache の設定を変更せずにこれを行う方法はありますか? おそらく、ホスティング サイトの Apache conf にアクセスすることはできず、常にセキュリティ上の懸念があります。これを行う正しい方法は何ですか?