webForumDet fria alternativet

Permission denied to call method XMLHttpRequest.open

5 svar · 442 visningar · startad av Riri

RiriMedlem sedan dec. 2000189 inlägg
#1

Hej,

Jag försöker få till ett XMLHttpRequest.open kall mot en annan domän (utvecklar lokalt nu men vill även att det i produktion skall gå mot annan domän än skriptet kör på). Det funkar i IE men i FF får jag "Permission denied to call method XMLHttpRequest.open".

Finns det ett sätt att komma runt detta? Och vad beror det på?

Tack.

Richard

Kod:

// global flag
var isIE = false;

// global request and XML document objects
var req;

// retrieve XML document (reusable generic function);
// parameter is URL string (relative or complete) to
// an .xml file whose Content-Type is a valid XML
// type, such as text/xml; XML source must be from
// same domain as HTML file
function loadXMLDoc(url) {
	alert(url)
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        isIE = true;
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

// handle onreadystatechange event of req object
function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
			alert(req.responseText);
        } else {
			alert("There was a problem retrieving the XML data:\n" +
			req.statusText);
        }
    }
}

// invoked by "Category" select element change;
// loads chosen XML document, clears Topics select
// element, loads new items into Topics select element
function loadDoc(evt) {
    // equalize W3C/IE event models to get event object
    evt = (evt) ? evt : ((window.event) ? window.event : null);
    if (evt) {
        // equalize W3C/IE models to get event target reference
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (elem) {
            try {
                if (elem.selectedIndex > 0) {
                    loadXMLDoc(elem.options[elem.selectedIndex].value);
                }	
            }
            catch(e) {
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
                alert("Unable to get XML data:\n" + msg);
                return;
            }
        }
    }
}
Peter SMedlem sedan dec. 20025 484 inlägg
#2

Hejsan! :)

Se om följande inlägg kan hjälpa dig: http://www.webforum.nu/showthread.php?p=1078085#post1078085

RiriMedlem sedan dec. 2000189 inlägg
#3

Tack för svaret Peter!

Innebär detta att det kommer att fungera när jag kör lokalt? Det kommer dock inte att fungera om jag flyttar ut det till en produktionsserver och kör ett cross-domain-kall, eller hur?

Har du testat att köra ett cross-domain-kall via Firefox och signera script etc?

Richard

Peter SMedlem sedan dec. 20025 484 inlägg
#4

Hej!

Jag har testat att köra det cross-domain och det fungerar utmärkt! :)

Du kan läsa mer här.

RiriMedlem sedan dec. 2000189 inlägg
#5

Ok! Jag trodde det var ganska buggigt! Kul att höra att det funkar!

Men då gick du alltså igenom hela processen och signerade scripten?

Richard

Peter SMedlem sedan dec. 20025 484 inlägg
#6

Nej, jag personligen har aldrig gått igenom processen med att signera skripts. Men sidan jag hänvisade till ovan beskriver i detalj hur det går till, så det borde inte vara några problem. :)

Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb