Toon posts:

[AJAX] Foutmelding Firefox door firewall?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Ik zit met een erg vreemd probleem, hopelijk kan iemand hier een goede tip geven waar ik precies kan zoeken. Het zit zo. We hebben een JSF applicatie met een custom AJAX component. Als we dit lokaal testen werkt het perfect in IE en in Firefox. Maar op onze productieomgeving werkt het goed in IE, maar krijgen we een foutmelding in Firefox (2.0 en 1.5).

Het is heel vreemd want de code is hetzelfde, en zelfs de server is redelijk gelijk ingericht. Het enige verschil is dat er een load-balancer (BIG-ip) tussen staat. Het liefst zou ik even met Ethereal ofzo de pakketten afvangen en vergelijken, maar helaas gaat dit niet door de HTTPS verbinding.

Het probleem is dat ik niet echt een JS-expert ben, en de originele programmeur is vertrokken.. Zover ik kan zien wordt er in het volgende geval een foutmelding gegenereerd.

code:
1
2
3
4
5
6
7
8
if (xmlDoc.readyState == 4) {
    if (xmlDoc.responseText != "" && xmlDoc.responseXML != null) {
        eval(func + "(xmlDoc.responseXML)");
    } else {
        eval(errorFunc + "(urlstr, xmlDoc.responseText)");
        eval(errorFunc + "(urlstr, xmlDoc.responseXML)");
    }
}

De errorFunc laat in een alert de binnengekomen XML zien. Hieruit blijkt dat alleen de responseText gevuld is, maar niet de responseXML.... hoe zou dit kunnen komen? De XML die uit de responseText komt is namelijk gewoon valide XML, en is hetzelfde als wat er lokaal gegenereerd wordt!

Ik heb geen idee wat er precies aan de hand kan zijn, en al helemaal niet hoe ik het moet oplossen. Hopelijk kan iemand van jullie en licht op werpen? :'(

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Content type van je XML data is vermoedelijk niet text/xml.

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Inderdaad, de HTTP header zal door de firewall op text/plain gezet zijn ofzoiets. IE gaat daar heen relaxed mee om en parsed alsnog naar XML als je het uitleest. Firefox is streng en vult alleen de text.

De klant doet alleen altijd heel moeilijk over hun firewall/loadbalancer, dus ik zal een workaroundje moeten maken gok ik.

Ik denk dat het hiermee wel geregeld kan worden, kan het alleen niet testen haha..
code:
1
2
var reparsed = (new DOMParser()).parseFromString(xmlDoc.responseText, "text/xml");
eval(func + "(reparsed)");

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Het lijkt me dat je het probleem beter bij de bron aan kan pakken ;)

Overigens zijn die eval()'s hier overbodig, je kan in JS prima dit doen:
JavaScript:
1
func(xmlDoc.responseXML);

Intentionally left blank


Verwijderd

Topicstarter
Dat leek me ook ja, nogmaals: Ik heb de originele code niet geschreven, zal vast een goede reden voor geweest zijn :)

Verwijderd

Topicstarter
Ok, het lijkt nu allemaal goed te werken, zelfs als ik lokaal hard de response op text/plain zet komt het goed door. De hotfix werkt!

Thanks anyway for the comments
Pagina: 1