我正在尝试创建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')
}
我做错了什么?
答案 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,你就没有做错任何事。