2013-02-05 13 views
5

Bu muhtemelen bir basit (soru) sorudur ancak kafamı buralara dolamıyorum.Github API'sı ve Erişim-Denetim-İzin-Menşei

Sitemde barındırılan bir web uygulamasından github api'ye erişmeye çalışıyorum.

<!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> 

Ben bu basit sayfaya benim tarayıcınızı Eğer

on my dropbox account herşey yolunda yüklendi: Bu Özetle koddur. , bunun yerine, ben rezil Access-Control-Allow-Origin istisna olsun, bu basit sayfaya tarayıcım on my site yüklenen etmektedir:

XMLHttpRequest cannot load https://api.github.com/repos/janesconference/kievIIPlugins/commits?_=1360060011783. Origin http://bitterspring.net is not allowed by Access-Control-Allow-Origin. 

Yani, soruları:

  • Neden Dropbox üzerinde çalışır?
  • CORS ile web sitesinde bile çalışacağını anlıyorum. Bu, Apache yapılandırmamda Access-Control-Allow-Origin: *.github.com veya bunun gibi bir şey koymaktır. Ama, en.wiki alıntı Ancak

, bu güvenlik bir ilgilendirir

  • değiştirmeden bunu yapmanın bir yolu var mı olduğu durumlar için uygun olmayabilir Apache yapılandırması? Muhtemelen, barındırma sitemin Apache conf'a dokunamıyorum ve her zaman güvenlik endişesi var. Bunu yapmanın doğru yolu nedir? https://github.com/settings/applications

    Eğer CORS işe gitmek için bir GitHub uygulamaları kullanarak olduğundan: Amacıyla

+0

Dropbox benim için iyi çalışıyor. Yeni bir uygulama kaydetmeyi denedim, ancak açıkçası geri arama URL'si alanına ne yazacağımı bilmiyorum:) Bunun nasıl kurulacağına dair bana bir işaret verebilir misiniz? (Gönderdiğiniz bağlantı bana herhangi bir ipucu vermez) – janesconference

+0

Üzgünüm, benim hatam, şirketimin tüm trafiği yakın zamanda dropbox'a filtrelediğini gösteriyor. Adı: URL'ye ivanzuzak.info: Geri arama URL'ye ivanzuzak.info: ivanzuzak Ben Bu benim GH API kullandığını Sayfam için set-up ne var eve :) –

+0

aldığımda bir göz olacak.bilgi Bu nedenle, API'yı yalnızca statik bir sayfadan çağırıyorsanız, durumunuz olan her şey aynıdır. CORS'yi bir etki alanı için etkinleştirmek ve OAuth'u kullanmamak istediğinizden, kullanım senaryonuz için geri arama URL'sine ihtiyacınız yoktur. –

cevap

7

CORS Siteniz için çalışan almak için (örneğin http://example.com), buradan bir GitHub OAuth uygulamasını oluşturarak bu etkinleştirmek zorunda

  • Adı: http://example.com
  • URL:, sadece "Uygulama formu oluşturma" her üç alanda sitenizin URL'sini girebilirsiniz (OAuth kendisi sağlayan kullanmadığınızda) 10
  • Geri arama URL: OAuth işlevini kullanmak istiyorsanız http://example.com

Not, eğer farklı kurulum Geri arama URL'ye gerektiğini.

Bundan sonra, sitenize http://example.com adresinden GitHub API'lerine AJAX istekleri gönderebilmeniz gerekir.