2011-12-07 62 views
1

它是我第一次開發Google Chrome Extentions,我的目標是從我本地機器上託管的REST服務中檢索URL,並將其顯示在彈出窗口中...這是使用的代碼:「Chrome擴展名不被Access-Control-Allow-Origin允許」的含義?

<style> 
body { 
    min-width:357px; 
    overflow-x:hidden; 
} 
</style> 

<script> 
var req = new XMLHttpRequest(); 
req.open(
    "GET", 
    "http://URLTORESTSERVICE/Items", 
    true); 
req.onload = showWorklistItems; 
req.send(null); 

function showWorklistItems() { 
    var worklistitems = req.responseXML.getElementsByTagName("WorklistItem"); 
    for (var i = 0, wli; wli = worklistitems[i]; i++) { 
    var link = document.createElement('a'); 
    link.setAttribute('href', constructWLIURL(wli)); 
    document.body.appendChild(link); 
    } 
} 

function constructWLIURL(wli) { 
    return "testing" + wli.getAttribute("SerialNumber"); 
} 
</script> 

但是,當我執行我得到這個錯誤:

XMLHttpRequest cannot load http://URLTORESTSERVICE/Items. Origin chrome-extension://caioejefhikijgcaondigdaaobomailk is not allowed by Access-Control-Allow-Origin. 
+1

您是否在manifest.json文件中設置了權限? – Thew

回答

0

Access-Control-Allow-Origin是您的服務器發送的(或不)的報頭。某些瀏覽器(特別是Chrome和Firefox)在跨域請求方面尊重此標題。這意味着,除非在該標題中列出始發域,否則瀏覽器將拒絕執行該請求(或至少完全)。

您可以改變您的本地服務器以正確設置標題,或者您可能會改變Chrome的設置,以停止處理您正在做的跨域請求。

3

您正在擊中CORS或「跨源資源共享」。 http://enable-cors.org/是一個很好的資源。它由您的請求引起,不是源於與數據服務相同的域。

爲了讓您在從另一個域中的Ajax請求使用這些數據,你要問的數據提供程序添加類似於以下到他們的HTTP響應CORS標題。 (注:JSONP而危險的,解決了這個問題。)

Access-Control-Allow-Origin: * 

編輯:我看你的數據提供 - 輸出頭,你會被設定。