我的ajax跨域请求被Chrome取消

时间:2014-07-17 19:34:38

标签: javascript jquery ajax google-chrome

我正在尝试创建Google Chrome扩展程序中的这些ajax请求,但每次我的扩展程序发出请求时,它都会被取消。我不知道为什么。

下面的这个代码段工作正常。

    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')
    }

我做错了什么?

2 个答案:

答案 0 :(得分:2)

除非扩展程序具有正确的安全权限,否则Chrome扩展程序不会发出跨站点请求。

另请参阅:Chrome开发者网站上的Cross-Origin XMLHttpRequest

答案 1 :(得分: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,你就没有做错任何事。