2013-02-05 67 views
5

यह शायद एक साधारण (श्रृंखला) प्रश्न है लेकिन मैं इसके चारों ओर अपने सिर को लपेट नहीं सकता।गिथब एपीआई और एक्सेस-कंट्रोल-अनुमति-उत्पत्ति

मैं अपनी साइट पर होस्ट किए गए वेब ऐप से जिथब एपीआई तक पहुंचने का प्रयास कर रहा हूं।

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

अगर मैं इस सरल पेज के लिए अपने ब्राउज़र को अपलोड on my dropbox account सब कुछ ठीक है: यह संक्षेप में कोड है। , तो इसके बजाय, मैं इस सरल पृष्ठ पर अपने ब्राउज़र on my site अपलोड बात, मैं कुख्यात 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 डालने का विषय है। लेकिन,, en.wiki से उद्धृत के रूप में
हालांकि

, यह उचित परिस्थितियाँ होती हैं जिनमें सुरक्षा एक चिंता का विषय

  • वहाँ बदले बिना यह करने के लिए एक रास्ता है है के लिए हो सकता है अपाचे कॉन्फ़िगरेशन? शायद, मैं अपनी होस्टिंग साइट के अपाचे conf को स्पर्श नहीं कर सकता, और हमेशा सुरक्षा चिंता होती है। ऐसा करने का सही तरीका क्या है? https://github.com/settings/applications

    आप एक GitHub अनुप्रयोगों का उपयोग कर रहे हैं के बाद से CORS काम करने के लिए प्राप्त करने के लिए:

+0

ड्रॉपबॉक्स मेरे लिए ठीक काम करता है। मैंने एक नया एप्लीकेशन पंजीकृत करने का प्रयास किया, लेकिन मुझे स्पष्ट रूप से पता नहीं है कि कॉलबैक यूआरएल फ़ील्ड पर क्या रखा जाए:) क्या आप मुझे इसे सेट अप करने के बारे में कुछ पॉइंटर्स दे सकते हैं? (आपके द्वारा पोस्ट किया गया लिंक मुझे कोई संकेत नहीं देता है) – janesconference

+0

क्षमा करें, मेरी गलती, ऐसा लगता है कि मेरी कंपनी हाल ही में ड्रॉपबॉक्स में सभी ट्रैफ़िक फ़िल्टर कर रही है। जब मैं घर आऊंगा तो देखेंगे :) –

+0

यह है कि मैंने अपने पृष्ठ के लिए सेट अप किया है जो जीएच एपीआई का उपयोग कर रहा है: नाम: ivanzuzak.info यूआरएल: ivanzuzak.info कॉलबैक यूआरएल: ivanzuzak।जानकारी तो, अगर आप एक स्थिर पृष्ठ से एपीआई का आविष्कार कर रहे हैं, तो यह सब कुछ वही है, जो आपकी स्थिति है। आपको वास्तव में अपने उपयोग परिदृश्य के लिए कॉलबैक यूआरएल की आवश्यकता नहीं है, क्योंकि आप सिर्फ डोमेन के लिए सीओआरएस सक्षम करना चाहते हैं, और ओएथ का उपयोग नहीं करना चाहते हैं। –

उत्तर

7

आदेश में करने के CORS अपनी साइट के लिए काम करने के लिए (जैसे http://example.com), आप यहाँ एक GitHub OAuth आवेदन बनाने के द्वारा इसे सक्षम करने के लिए है

  • नाम: http://example.com
  • यूआरएल:, तो आप सिर्फ अपनी साइट का URL सभी तीन क्षेत्रों में "आवेदन पत्र बनाएँ" में प्रवेश कर सकते हैं (OAuth खुद को सक्षम करने के लिए इसे प्रयोग नहीं) 10
  • कॉलबैक URL: http://example.com

ध्यान दें कि यदि आप OAuth कार्यक्षमता का उपयोग करना चाहते हैं, आप करने के लिए सेटअप कॉलबैक URL अलग ढंग से की जरूरत है।

इसके बाद, आप अपनी साइट http://example.com से गिटहब एपीआई को AJAX अनुरोध भेजने में सक्षम होना चाहिए।