这可能是一个简单的(一系列)问题,但我无法解决。
我正在尝试从托管在我网站上的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>
如果我将浏览器指向在我的保管箱帐户上载的这个简单页面,则一切正常。相反,如果我将浏览器指向该网站上上传的这个简单页面,则会得到臭名昭著的Access- Control-Allow-Origin异常:
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.
因此,问题是:
Access-Control-Allow-Origin: *.github.com
但是,这可能不适用于需要考虑安全性的情况
为了使CORS适用于您的网站(例如http://example.com),您必须通过在以下位置创建GitHub OAuth应用程序来启用它:https : //github.com/settings/applications
由于您正在使用GitHub应用程序来使CORS正常工作(而不是使用它来启用OAuth本身),因此您只需在“创建应用程序表单”的所有三个字段中输入站点的URL:
请注意,如果您打算使用OAuth功能,则需要以其他方式设置回调URL。
之后,您应该能够从站点http://example.com将AJAX请求发送到GitHub API 。