我正在尝试构建一个chrome扩展,我需要ping不同的机器。我尝试过的代码能够读取https站点的响应头但不能读取http。我是Javascripting的新手。任何帮助都会很棒。我知道这是一个CORS问题并尝试在客户端代码中设置标题。很多论坛提到它设置服务器端但在这种情况下我该怎么办?请在快照中找到以下代码以及从https站点返回的插件UI和响应。
代码 -
url="https://www.icicibank.com/";
//url = "www.rediff.com/";
ping = new XMLHttpRequest();
ping.open("get", url,true);
//ping.setRequestHeader("Access-Control-Allow-Origin","*");
// ping.setRequestHeader("Access-Control-Allow-Credentials", "true");
ping.send(null)
ping.onreadystatechange=function() {
if (ping.readyState==4) {
alert(ping.getAllResponseHeaders());
//alertify.alert(ping.getAllResponseHeaders());
}
}
由于
答案 0 :(得分:0)
CORS确实是服务器响应的一部分,不请求。所以你不能把它“设置”在你身边。
但是,允许扩展绕过CORS限制和make cross-origin requests。但为此您需要列出您要连接到in manifest permissions的域名。在安装时,将警告用户您将与这些域进行交互。
例如,要允许http://example.com
和https://example.com
域的请求而不管CORS,您需要包含在清单中:
"permissions" : [
"*://example.com/"
],
如果您无法提及需要提前连接的网站,则您需要拥有所有网址的权限(特殊权限,字面意思为"<all_urls>"
)或使用Optional Permissions请求在运行时。