webForumDet fria alternativet
Logga in / Bli medlem

Permission denied to call method XMLHttpRequest.open

JavaScript

5 svar · 442 visningar · startad av Riri

Medlem sedan dec. 2000182 inlägg
Trådstart#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;
            }
        }
    }
}
Medlem sedan dec. 20025 483 inlägg
#2

Hejsan! :)

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

Medlem sedan dec. 2000182 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

Medlem sedan dec. 20025 483 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.

Medlem sedan dec. 2000182 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

Medlem sedan dec. 20025 483 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. :)

253 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)