FireFox的跨網域問題(Cross Domain)

摘要:FireFox的跨網域問題(Cross Domain)

話說我在前一篇抓取奇摩的氣象一文中,

曾經提到FireFox的XMLHttpRequest的方法對於跨網域的GET與POST資料會發生錯誤

這裡指的跨網域是說,在同一個Web Site裡,FireFox的XMLHttpRequest是可以work的

如localhost、192.168.1.x等等,而當離開本機端或是跨Domain時,這時錯誤就會出現了

我找到2個方法可以解決他

一、在程式裡宣告底下的程式碼

首先我們宣告出XMLHttpRequest的物件出來

xmlHttp = new XMLHttpRequest();

接著插入這個必要的程式

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

這一行程式主要是跟FireFox Browser說,請他忽略Cross Domain的問題

接著我們來看一下成果了

一開始出現這個提示視窗,是因為我們下了剛才那一段程式的原因,我們就選擇允許就好了


二、FireFox的環境設定

FireFox本身的安全性極高,但他有一些參數可讓我們去調整來因應

Step1:

我們在網址列打about:config,就可以看到他的參數設定了

接著我們在篩選器上key signed.applets.codebase_principal_support

這個是他的參數設定,他預設是False,這邊我將其改成True

Step2:

接著我們要去FireFox在我們本機的目錄設定

C:\Documents and Settings\你的電腦名稱\Application Data\Mozilla\Firefox\Profiles\

底下有xxxx.default資料夾,點進去裡面會有prefs.js的FireFox設定檔,我們copy他一份改成user.js

接著我們打開user.js,複製底這下這三行程式碼

user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.open","allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.sites", "http://localhost:1518");
user_pref("capability.policy.policynames","XMLHttpRequestToAnySite");

 這邊的localhost:1518是在我本機的環境設定,大家就要依你們的實際位置加上去

接著我們也來看一下成果了


參考資料

XMLHttpRequest permission denied fix

How to fix ajax Error:uncaught exception:Permission denied to call method XMLHttpRequest.open 

FireFox Configuraton File


程式下載