web services - AS3+HTTP GET काम नहीं करता है




web-services actionscript-3 (2)

यह एक क्लासिक सुरक्षा त्रुटि है जो कि जब एक एसडब्ल्यूएफ अपने स्वयं के अलावा अन्य डोमेन में सामग्री को लोड करने का प्रयास करता है और इसे करने के लिए प्राधिकरण नहीं है, तो निकाल दिया जाता है। इसलिए इस प्रकार की सुरक्षा त्रुटि से बचने के लिए, आपको सर्वर की जड़ पर एक crossdomain.xml फाइल बनाना होगा, जहां से आप डेटा लोड करना चाहते हैं। चीजों को और अधिक समझने के लिए, इस स्कीमा पर एक नज़र डालें ( एडोब क्रॉस डोमेन पॉलिसी फाइल से लिया और संपादित किया गया):

इसलिए इस मामले में, a.com से डेटा लोड करने के लिए a.com में एक एसवीएफ फ़ाइल की अनुमति देने के लिए, हमें b.com/crossdomain.com की जड़ में एक crossdomain.xml फ़ाइल जोड़नी है, इसलिए हम b.com/crossdomain.com का उपयोग करके इसे एक्सेस कर सकते हैं। b.com/crossdomain.com इस फाइल की सामग्री और उसके बारे में अधिक जानकारी के लिए, आप क्रॉसडोमेन विनिर्देश के ऊपर दिए लिंक देख सकते हैं। ऐसा हो सकता है:

<?xml version="1.0"?>
<cross-domain-policy>
    <!-- if used alone, allow only all a.com requests but not its sub-domains -->
    <allow-access-from domain="a.com"/>
    <!-- if used alone, allow all a.com sub-domains and a.com requests -->
    <allow-access-from domain="*.a.com"/>
    <!-- if used alone, allow only b.a.com sub-domain requests -->
    <allow-access-from domain="b.a.com"/>
</cross-domain-policy>

मुझे आशा है कि ये सभी आपकी समस्या को सुलझाने में आपकी सहायता कर सकते हैं।

मेरे पास फ्लैश में एक परियोजना है और मैं कुछ डेटा के साथ वेबसर्वर का उपयोग करता हूं मैंने उस जानकारी को पढ़ा है (जेएसएन):

var url:String = "URL REQUEST";
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.load(request);

और मैं उस जानकारी को एक TextField में उपयोग करता हूँ यह ठीक काम करता है और मेरे डेटा को ठीक से दिखाता है। लेकिन, जब मैं अपना काम प्रकाशित करता हूं या फ़ाइल खोलता हूं .SWF डेटा नहीं दिखाता है

एडोब फ्लैश के अंदर ठीक काम करता है बाहर काम नहीं करता है

मेरे पास नोडजेएस में सेवा के साथ एक रास्पबेरी पीआई है दरवाजा राउटर में खुला है

मेरे नोडजेएस

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
const port = process.env.PORT || 3001;
const SERVER_ROOT = "http://localhost:" + port;
var messages =  {};
messages["a1"] = blablabla;
--
messages["n"] = blablabla;
function buildMessage(newID, text, user){
const now = new Date();
return {

    };
};
app.route("/message") 
.get(function(req, res) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");

    res.json(messages);
});
app.param('messageID', function(req, res, next, messageID){
req.messageID = messageID;
return next();
})
app.listen(port, function() {
console.log("Listening on " + port);
});

सबसे अधिक संभावना है कि आप एक सुरक्षा त्रुटि प्राप्त कर रहे हैं। यहां कुछ कदम उठाए जा सकते हैं:

  1. अपने लोडरों को उचित श्रोताओं को जोड़ना सुनिश्चित करें ताकि आप त्रुटियों को ठीक से व्यवस्थित कर सकें।

    loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandlerFunction);
    loader.addEventListener(IOErrorEvent.NETWORK_ERROR, ioErrorHandlerFunction);
    loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandlerFunction);
  2. सुनिश्चित करें कि आप सही सुरक्षा सैंडबॉक्स सेटिंग के साथ प्रकाशित कर रहे हैं।

    अपनी प्रकाशन सेटिंग्स फ़ाइल -> सेटिंग प्रकाशित करें।

    आपको स्थानीय प्लेबैक सुरक्षा लेबल वाला एक ड्रॉप डाउन दिखाई देगा सुनिश्चित करें कि यह केवल नेटवर्क का उपयोग करने के लिए सेट है, न केवल डिफ़ॉल्ट पहुंच को केवल स्थानीय

यदि आप अपनी त्रुटियों को संभालते हैं, तो आपको कम से कम पता चल जाएगा कि समस्या क्या है यदि यह आपकी समस्या का समाधान नहीं करता है, तो एक वैश्विक त्रुटि हैंडलर जोड़ें और जो कुछ भी फेंका जा रहा है उसे साझा करें (यदि कुछ भी हो)।

आप अपने मुख्य टाइमलाइन या दस्तावेज़ वर्ग पर निम्न के साथ ऐसा कर सकते हैं:

loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);

function uncaughtErrorHandler(event:UncaughtErrorEvent):void {
    if (event.error is Error) {
        var error:Error = event.error as Error;
        trace(error);
    }
    else if (event.error is ErrorEvent){
        var errorEvent:ErrorEvent = event.error as ErrorEvent;
        trace(errorEvent);
    }
}

संपादित करें

अपने अपडेट को पढ़ने से, ऐसा लगता है कि आप ब्राउजर में पीआई नोड जेएस सर्वर से अपने एसईएफ को डिशिंग करके आसानी से इसका समाधान कर सकते हैं। (एचटीएमएल के साथ प्रकाशित करें तो सर्वर पर प्रतिलिपि करें और इसे अपने वेब ब्राउज़र में एक्सेस करें)।





flash