2013-10-03 2 views
6

में जेएस से क्रॉस-डोमेन वेब सेवा कॉल को कैसे संभालें I HTML विजेट के भीतर से एक वेब सेवा क्रॉस डोमेन कॉल करने का प्रयास कर रहा हूं। यह काम नहीं लग रहा है। यह एक ही डोमेन के तहत बहुत अच्छा काम किया। मैं ऑर्चर्ड के भीतर एक लॉग इन पेज बनाने की कोशिश कर रहा हूं जिसका इस्तेमाल किसी अन्य डोमेन पर मेरे सॉफ़्टवेयर में लॉग इन करने के लिए किया जा सकता है। वेब सेवा उपयोगकर्ता प्रमाण-पत्रों को सत्यापित कर रही है और एक बूलियन लौटा रही है जो तब उपयोगकर्ता प्रमाणीकरण उत्पन्न करेगी।ऑर्चर्ड सीएमएस

मैंने पढ़ा है कि मैं अन्य डोमेन पर वेब सेवा को कॉल करने के लिए HTTP हैंडलर या किसी अन्य वेब सेवा (ऑर्चर्ड पक्ष पर) का उपयोग कर सकता हूं, लेकिन मैं ऐसा करने के लिए एमवीसी या ऑर्चर्ड के साथ पर्याप्त परिचित नहीं हूं। मैं इनमें से एक को अपने ऑर्चर्ड वेब एप्लिकेशन में कैसे जोड़ सकता हूं?

उत्तर

11

क्लाइंट-साइड कोड के भीतर से क्रॉस-डोमेन कॉल सभी प्रमुख ब्राउज़रों में नो-नो हैं। आप या तो

  1. CORS का उपयोग करें, यानी। वेब सेवा जवाब में http://your-caller-domain.com को Access-Control-Allow-Origin हैडर सेट अनुरोध अपनी वेबसाइट डोमेन
  2. उपयोग JSONP तकनीक
  3. अपने आवेदन के भीतर एक कस्टम प्रॉक्सी एपीआई बनाएं से होने वाले अनुमति देने के लिए (सादा का उपयोग कर ASP.NET MVC controller या एक WebAPI एक) है कि प्रदर्शन करेंगे WebClient कक्षा का उपयोग कर सर्वर पक्ष पर कॉल करें और आपको प्रतिक्रिया वापस कर दें।

विकल्प सर्वोत्तम से सबसे खराब होने का आदेश दिया जाता है। आईई 8/9 को छोड़कर अधिकांश ब्राउज़रों द्वारा सीओआरएस समर्थित है (जिसमें XDomainRequest के माध्यम से आंशिक समर्थन है) और पुराना है। हालांकि इसके लिए कामकाज हैं।

ध्यान दें कि पहले दो में वेब-सेवा पक्ष में परिवर्तन शामिल हैं - यदि आप इसे नहीं कर सकते हैं, तो विकल्प 3. केवल एक ही शेष है।

+1

नोट: सीओआरएस के पास 'XDomainRequest' के माध्यम से आईई 8/9 में आंशिक समर्थन है। –

+0

@ रेनिकोलस हां, इसलिए मैंने उल्लेख किया कि कामकाज हैं। स्पष्ट रूप से इंगित करने के लिए धन्यवाद कि - जवाब के अनुसार उत्तर अपडेट किया गया। –

संबंधित मुद्दे