2014-07-17 31 views
0

我正在嘗試從Google Chrome擴展創建這些ajax請求,但每次我的擴展發出請求時,它都會被取消。我不知道爲什麼。我的ajax跨域請求被Chrome取消

下面的代碼片段工作正常。

function makeRequest(method, url){ 
     var xhr = new XMLHttpRequest(); 
     xhr.open("GET", "http://www.djjohal.com"); 
     xhr.send(); 
     } 


     setTimeout(makeRequest, 10000) 

但是,當我改變上面的代碼到這,它不起作用。

var submit = document.querySelector('input[type=submit]') 
    submit.addEventListener('click', callback) 


    function makeRequest(method, url){ 
     var xhr = new XMLHttpRequest(); 
     xhr.open(method, url); 
     xhr.send(); 
    } 


    function callback(){ 
     makeRequest('GET', 'http://www.djjohal.com') 
    } 

我在做什麼錯?

+0

也許你運行來自不同域的第二個代碼? – dandavis

回答

2

除非擴展程序具有正確的安全權限,否則Chrome擴展程序將受限於發出跨站點請求。

另請參閱:Chrome開發人員網站上的Cross-Origin XMLHttpRequest

1

這是由於djjohal.com服務器上的設置。

嘗試在題所給的代碼片段都,我在一個正常的網頁接收來自Chrome瀏覽此消息:

XMLHttpRequest cannot load http://www.djjohal.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access.

How to add an Access-Control-Allow-Origin header

如果你不是在djjohal的控制,你沒有做錯什麼。

+0

嘗試在擴展名中運行第一個代碼段工作正常,但第二個代碼失敗。 – Khalsa