读取响应标头的问题

时间:2016-11-18 12:06:18

标签: javascript google-chrome google-chrome-extension cors same-origin-policy

我正在尝试构建一个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());
}
}

由于

1 个答案:

答案 0 :(得分:0)

CORS确实是服务器响应的一部分,请求。所以你不能把它“设置”在你身边。

但是,允许扩展绕过CORS限制和make cross-origin requests。但为此您需要列出您要连接到in manifest permissions的域名。在安装时,将警告用户您将与这些域进行交互。

例如,要允许http://example.comhttps://example.com域的请求而不管CORS,您需要包含在清单中:

"permissions" : [
  "*://example.com/"
],

如果您无法提及需要提前连接的网站,则您需要拥有所有网址的权限(特殊权限,字面意思为"<all_urls>")或使用Optional Permissions请求在运行时。