这可能是一个简单的(一系列)问题,但我无法理解它。
我正在尝试从我网站上托管的网络应用程序访问 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 甚至可以在网站上使用。这是放置
Access-Control-Allow-Origin: *.github.com
我的 Apache 配置或类似的东西的问题。但是,正如 en.wiki 所引用的,
但是,这可能不适用于需要考虑安全性的情况
- 有没有办法在不更改 Apache 配置的情况下做到这一点?可能,我无法触摸托管站点的 Apache conf,并且总是存在安全问题。这样做的正确方法是什么?