2009-10-27 16 views
5

के साथ मूल प्रमाणीकरण यह *** अविश्वसनीय है! फ्लैश प्रोग्रामर उदाहरण से परिचित हैं:फ़्लैश

var req:URLRequest = new URLRequest("http://yoursite.com/yourservice.ext"); 
req.method = URLRequestMethod.POST; 
req.data = new URLVariables("name=John+Doe"); 

var encoder:Base64Encoder = new Base64Encoder();   
encoder.encode("yourusername:yourpassword"); 

var credsHeader:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString()); 
req.requestHeaders.push(credsHeader); 

var loader:URLLoader = new URLLoader(); 
loader.load(req); 

ठीक है ... बढ़िया ... वह असली काम करता है। जैसा कि आप देख सकते हैं मैं मैन्युअल रूप से मूल HTTP प्रमाणीकरण के लिए एक शीर्षलेख प्राधिकरण जोड़ता हूं। लेकिन ... अगर मैं POST से GET तक अनुरोध मेटोड बदलता हूं, तो हेडर उत्पन्न नहीं होता है।

क्या कोई ऐसा समाधान है जो समाधान जानता है? 1000x thx!

+0

मुझे यह मिला: http://www.abdulqabiz.com/blog/archives/2006/03/03/http-authentication-for-httpget-requests-using-actionscript-3/ – xpepermint

उत्तर

4

मुझे आश्चर्य है कि आप इसे POST अनुरोध के साथ काम करने में भी सक्षम हुए हैं। दिसंबर 2007 में, फ्लैश प्लेयर को Authorization header स्पष्ट रूप से अस्वीकार करने के लिए अपडेट किया गया था। मुझे लगता है कि यह संभव है कि उन्होंने इसे फिर से अनुमति दी है। लेकिन मैं उस से हैरान होगा। संपादित करें: @ derFunk की टिप्पणी के अनुसार, यह पता चला है कि वास्तव में हेडर को बाद में फिर से अनुमति दी गई थी, हालांकि इसे किसी भिन्न डोमेन पर भेजते समय इसे crossdomain.xml में स्पष्ट रूप से अनुमति दी जानी चाहिए।

Authorization शीर्षलेख के साथ विशिष्ट समस्याओं से परे, मुझे पूरा यकीन है कि फ़्लैश प्लेयर केवल POST अनुरोध के साथ कस्टम अनुरोध शीर्षलेख भेजेगा। मुझे खेद है कि मेरे पास इसके लिए कोई लिंक नहीं है, लेकिन मेरी फर्म में हम फ्लैश प्लेयर का उपयोग आराम से वेब सेवाओं के साथ काम करने के लिए करते हैं, और हमें चीजों को काम करने के लिए सभी प्रकार के कामकाज को लागू करना पड़ता है।

नीचे की रेखा, फ़्लैश प्लेयर भयानक HTTP के लिए समर्थन है। वास्तव में, हमारे कार्यप्रणाली का सेट अनुरोध हेडर X-Crippled-Client: true भेजकर सक्रिय किया जाता है, जो अनुरोधों की व्याख्या करने के लिए हमारी सेवाओं को बताता है, और प्रतिक्रियाओं को गलेदार तरीकों से भेजता है। यह बट में एक असली दर्द है।

क्षमा करें मैं और अधिक सहायक नहीं हो सकता ... शुभकामनाएं!

+1

प्राधिकरण शीर्षलेख पर अधिक जानकारी यहां पाया जा सकता है: http://helpx.adobe.com/flash-player/kb/authorization-header-request-flash-player.html: "एडोब फ्लैश प्लेयर 9.0.115.0 से शुरू करना प्राधिकरण शीर्षलेख को ब्लैकलिस्ट में जोड़ा गया था HTTP शीर्षलेखों के और, केवल इस संस्करण में, फ़्लैश प्लेयर द्वारा अवरुद्ध किया गया था। फ्लैश प्लेयर संस्करणों के लिए 9.0.115 से बाद में।0, प्राधिकरण हेडर को अवरुद्ध नहीं किया गया है, लेकिन गंतव्य डोमेन एक crossdomain.xml फ़ाइल को निर्दिष्ट करता है यह निर्दिष्ट करने के लिए कि प्राधिकरण शीर्षलेख की अनुमति है, अगर यह SWF फ़ाइल होस्ट करने वाले डोमेन से अलग है। " – derFunk

+0

@derFunk महान जानकारी, धन्यवाद! –

3

@ फ़्लेक्स: हाँ, मैं HTTP हेडर के साथ फ्लैश सुरक्षा पर अधिक सहमत नहीं हो सका। लेकिन ऐसा करने का एक और तरीका है, लेकिन इसके लिए बहुत कम काम की आवश्यकता है। URLLoader के बजाय सॉकेट का उपयोग करने का प्रयास करें, क्योंकि सॉकेट में ऐसे प्रतिबंध नहीं हैं। तो HTTP अनुरोध के लिए सर्वर के पोर्ट 80 (http://yoursite.com/) पर एक सॉकेट खोलें। जैसे ही यह सर्वर से कनेक्ट होता है, अपने सभी http अनुरोध शीर्षलेख भेजें। फिर सॉकेटडाटाइवेंट पर, डेटा को पार्स करें और प्रतिक्रिया शीर्षलेख पढ़ें (या त्यागें), और डेटा के साथ आगे बढ़ें।

+0

हाँ। .. मैंने यह किया ... लेकिन अब मुझे क्रॉसडोमेन सुरक्षा के साथ समस्या है :) सॉकेट चैट सर्वर जैसे गैर HTTP सर्वरों के लिए चाल करेगा जहां आप मैन्युअल रूप से क्रॉसडोमेन के साथ फ्लैश को संतुष्ट कर सकते हैं (उदाहरण: http://coderslike.us/ 200 9/01/23/फ्लैश-सॉकेट-कोड-एंड-क्रॉसडोमेन-पॉलिसी-सेवारत /) – xpepermint

+1

यहां आप सुरक्षा.लोड पॉलिसीफाइल ("http://www.yoursite.com/crossdomain.xml") का उपयोग कर सकते हैं; कनेक्ट करने से पहले सॉकेट पर – bhups

0

आप जीईटी विधियों द्वारा हेडर भेज सकते हैं, सिवाय इसके कि यदि आप इसे स्टैंडअलोन फ्लैश प्लेयर डीबगर (सरल पर परीक्षण न करें) v.11.4.402.265 पर परीक्षण करते हैं। यदि आप ब्राउज़र में अपना स्थानीय एसएफएफ खोलते हैं तो यह भी ठीक काम करता है।

2

तो यह बहुत पुराना है लेकिन यह तब आया जब मैं फ़्लैश प्लेयर के साथ Parse.com का उपयोग करने का एक तरीका खोज रहा था।

मुझे लगता है कि यह वास्तव में काम करता है, लेकिन एक जीईटी कमांड में फ्लैश को हेडर भेजने के लिए, बस इसे एक पोस्ट के रूप में सेट करें, लेकिन ओवरराइड चलाएं।

req.requestHeaders.push(new URLRequestHeader("X-HTTP-Method-Override", URLRequestMethod.GET)); 

मैंने यह सोचने की कोशिश की कि यह पागल था और संभवतः काम नहीं कर सका, लेकिन यह करता है!

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