8

根據使用XMLHttpRequest對象Chrome擴展API跨域調用應該被允許:跨來源XMLHttpRequest的在Chrome瀏覽器擴展

擴展可以跟遠程服務器的起源之外,只要因爲它首先請求跨源許可。

我密切關注the tutorial,但下面的代碼是給我的錯誤信息:

的XMLHttpRequest無法加載http://www.google.com/search?hl=en&q=ajax。 Origin chrome-extension:// bmehmboknpnjgjbmiaoidkkjfcgiimbo不被Access-Control-Allow-Origin允許。

我不僅允許向google.com發送請求,而且向任何網站發送請求,但仍然無法通過。 任何人都可以幫忙嗎?

我的清單文件:

{ 
    "name": "The popup", 
    "version": "0.1", 
    "popup": "popup.html", 
    "permissions": [ 
    "http://*/*", 
    "https://*/*", 
    "https://www.google.com/*", 
    "http://www.google.com/*" 
    ], 
    "browser_action": { 
    "default_icon": "clock-19.png", 
    "default_title": "This is title", 
    "default_popup": "popup.html" 
    } 
} 

實際調用:

function sendRequest() { 
    document.write("Sending request"); 
    var req = new XMLHttpRequest(); 
     req.open("GET", "http://www.google.com/search?hl=en&q=ajax", true); 
     req.onreadystatechange = function() { 
      if (req.readyState == 4) { 
      if (req.status == 200) { 
       alert(req.responseText); 
       document.write("OK"); 
      } 
      } 
     }; 
     req.send(); 
} 
+0

有類似的問題。我的工作就是不在manifest.json中設置跨域權限。我將添加http://developer.chrome.com/extensions/xhr.html供其他人查找。 – Jono 2014-01-25 13:30:32

回答

24

兩件事情;您需要確保您正在製作打包的應用/擴展程序,而不是託管的。跨域請求不適用於託管應用。假設您將該部分固定下來,則可能需要嘗試將以下內容放入您的權限中:http://*/。這是我打包的應用程序中唯一的一款,它確實可以跨越原始資料而沒有任何問題。

+3

賓果!我接下來的教程沒有提到它必須被打包才能使跨源xmlhttprequest正常工作的事實。我想這是自從我出生以來我應該知道的事情。謝謝! – matcheek 2012-02-23 22:42:29

+1

是的,我經歷了相同的試驗和錯誤來弄清楚。該文檔確實應該更新,以反映託管和打包應用程序之間的差異,並可能清除擴展是否與應用程序相同。 – 2012-02-24 12:14:32

+4

什麼是打包和託管擴展? – 2012-10-29 14:48:53

相關問題