2013-02-05 11 views
5

to prawdopodobnie proste pytanie (seria), ale nie mogę tego objąć.Github API i Access-Control-Allow-Origin

Próbuję uzyskać dostęp do interfejsu API github z aplikacji internetowej hostowanej na mojej stronie. Jest to kod w pigułce:

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

Gdybym wskazać przeglądarkę do tej prostej strony przesłanych on my dropbox account wszystko jest w porządku. Jeśli natomiast wskazuję moja przeglądarka tej prostej strony przesłanych on my site, mam niesławny Access-Control-Allow-Origin wyjątek:

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

więc pytania:

  • Dlaczego to działa na Dropbox?
  • Rozumiem, że z CORS działałby nawet na stronie internetowej. Jest to kwestia umieszczenia Access-Control-Allow-Origin: *.github.com w mojej konfiguracji Apache'a lub czegoś podobnego. Ale, jak cytat z en.wiki,

Jednak to może nie być odpowiednie dla sytuacji, w których bezpieczeństwo jest problemem

  • Czy istnieje sposób to zrobić bez zmiany Konfiguracja Apache? Prawdopodobnie nie mogę dotknąć konfiguacji Apache mojej strony hostingowej i zawsze jest problem bezpieczeństwa. Jaki jest właściwy sposób na zrobienie tego?
+0

Dropbox działa dobrze dla mnie. Próbowałem zarejestrować nową aplikację, ale szczerze mówiąc nie wiem, co umieścić w polu adresu zwrotnego URL:) Czy możesz podać mi wskazówki, jak to skonfigurować? (opublikowany link nie daje mi żadnej wskazówki) – janesconference

+0

Niestety, mój błąd, wygląda na to, że moja firma odfiltrowuje cały ruch do Dropbox od niedawna. Będzie wyglądać, kiedy wrócę do domu :) –

+0

To jest to, co skonfigurowałem dla mojej strony, która używa API GH: Nazwa: ivanzuzak.info URL: ivanzuzak.info Adres zwrotny URL: ivanzuzak.info Wszystko jest więc takie samo, jeśli po prostu wywołujesz interfejs API ze strony statycznej, która jest twoją sytuacją. W rzeczywistości nie potrzebujesz adresu wywołania zwrotnego dla scenariusza użycia, ponieważ chcesz tylko włączyć CORS dla domeny, a nie używać OAuth. –

Odpowiedz

7

w celu uzyskania CORS pracuje na swojej stronie (np http://example.com), musisz ją włączyć, tworząc aplikację GitHub OAuth tutaj: https://github.com/settings/applications

Ponieważ są przy użyciu aplikacji GitHub dostać CORS pracować (nie używając go do umożliwienia sobie OAuth), można po prostu wpisać adres URL witryny we wszystkich trzech polach w „Utwórz formularz wniosku”:

Pamiętaj, że jeśli masz zamiar używać funkcjonalności OAuth, musisz konfiguracji zwrotnego adresu URL inaczej.

Po tym, powinieneś być w stanie wysyłać żądania AJAX do API GitHub z twojej witryny http://example.com.

Powiązane problemy