Chrome瀏覽器擴充套件開發系列之十五:跨域訪問的XMLHttpRequest物件

Chrome擴充套件開發極客發表於2015-10-10

XMLHttpRequest物件是W3C的標準API,用於訪問伺服器資源。XMLHttpRequest物件支援多種文字格式,如XML和JSON等。XMLHttpRequest物件可以通過HTTP和HTTPS傳送請求。

通常出於安全的考慮,Web頁面的XMLHttpRequest物件不能訪問其他域的伺服器。但是Chrome瀏覽器擴充套件沒有這個限制,只要設定了跨域訪問的許可權,Chrome瀏覽器擴充套件的XMLHttpRequest物件可以訪問宣告的任何域的伺服器。

每個Chrome瀏覽器擴充套件都執行於自己的獨立安全域,Chrome瀏覽器擴充套件的XMLHttpRequest物件能夠輕鬆訪問其所在擴充套件的內部資源,示例如下:

1 var xhr = new XMLHttpRequest();
2 xhr.onreadystatechange = handleStateChange; // Implemented elsewhere.
3 xhr.open("GET", chrome.extension.getURL('/config_resources/config.json'), true);
4 //訪問內部位於config_resources目錄下的config.json檔案
5 xhr.send();

如果Chrome瀏覽器擴充套件的XMLHttpRequest物件要訪問跨域資源,需要在manifest.json檔案中宣告要訪問的域如下:

1 {
2   "permissions": [
3 "http://www.google.com/",
4 "http://*.google.com/",
5 "https://*.google.com/",
6 "http://*/"
7   ],
8 }

注意:這裡只設定域,對於域後的任何路徑都將忽略。

             同一域名,還要區分HTTP和HTTPS。

             跨域訪問的響應處理中,要注意響應資料的安全性,避免注入木馬。

 

如果修改了Chrome瀏覽器擴充套件的預設內容安全策略,則還需要確保要訪問的域被授權,如可以將要訪問的域加入到connect-src或default-src中。關於Chrome瀏覽器擴充套件的內容安全策略,詳見內容安全策略部分。

 

相關文章