Pracując przy projekcie w którym kod javascriptowy jest docelowo pisany pod platformy mobilne lub np. ma być wykorzystany w QML-u, nie przejmuję się restrykcjami np. przy tworzeniu komunikacji ajaxowej ze względu na to że aplikacje uruchamiane są na urządzeniach jako ‘natywne’ i nie zakłócają ‘same origin policy’. Przy takim dewelopmencie komunikacje czy nawet aplikacje najszybciej można przetestować było korzystając z Firefoxa włączając do kodu prosty skrypcik

var xmlHttp = new XMLHttpRequest();
/*
 * ustawiamy uprawnienia zeby mozna bylo odwolywac sie do innej domeny,
 * lub odpalajac komunikacje z lokalnego pliku
 */
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
//wazne zeby open byl zaraz po ustawieniu uprawnien
xmlHttp.open('get,'http://dowolnadomena.com');

Firefox pyta wtedy użytkownika o zgodę na połączenie do domeny i można było spokojnie testować aplikacje dopóki… nie pojawił się Firefox 5 :) .
Mozilla począwszy od Firefox-a 5 w górę wyłączyła funkcjonalność ‘enablePrivilege’. W tym momencie jedyną opcją żeby dewelopować czy testować taki scenariusz korzystając z Firefoxa 5+ można:
stworzyć własny plugin który dostarcza taką możliwość lub przewertować MDN i bugzille mozilli :) i dotrzeć do tego linku https://bugzilla.mozilla.org/attachment.cgi?id=545203
(z wątku bug-a zgłoszonego w powyższej sprawie), gdzie znajduje się Special Powers w formie pluginu dla Firefoxa.

Special Powers jest to zestaw API który normalnie jest częścią Mochitest – frameworka do testów automatycznych używanych do testowania build-ów firefox-a oraz potencjalnych zagrożeń związanych z wykorzystaniem javascriptu czyli wszędzie tam gdzie chcemy żeby nasz skrypt mógł robić to czego nie powinien ;) . Po zainstalowaniu plugina zobaczymy że pojawi się globalny obiekt SpecialPowers. Teraz możemy zmodyfikować powyższy przykład:

//korzystamy z super mocy ^^
var xmlHttp = SpecialPowers.createSystemXHR();
xmlHttp.open('get,'http://dowolnadomena.com');

i stworzyć obiekt xmlHttpRequest który posiada uprawnienia łączenia się z innymi domenami.

Warto wiedzieć że Special Powers to nie tylko komunikacja ajax kompletną listę ‘super mocy’ znajdziecie tutaj.

Jeden komentarz


  1. Grzegorz on 13 wrz 2011

    “Firefox pyta wtedy urzytkownika o zgodę”


Skomentuj