XMLHttpRequest對象是W3C的標準API,用於訪問服務器資源。XMLHttpRequest對象支持多種文本格式,如XML和JSON等。XMLHttpRequest對象能夠經過HTTP和HTTPS發送請求。chrome
一般出於安全的考慮,Web頁面的XMLHttpRequest對象不能訪問其餘域的服務器。可是Chrome瀏覽器擴展沒有這個限制,只要設置了跨域訪問的權限,Chrome瀏覽器擴展的XMLHttpRequest對象能夠訪問聲明的任何域的服務器。json
每一個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。服務器
跨域訪問的響應處理中,要注意響應數據的安全性,避免注入木馬。google
若是修改了Chrome瀏覽器擴展的默認內容安全策略,則還須要確保要訪問的域被受權,如能夠將要訪問的域加入到connect-src或default-src中。關於Chrome瀏覽器擴展的內容安全策略,詳見內容安全策略部分。spa