来自chrome扩展的注入脚本中的跨域请求

时间:2013-02-12 09:49:31

标签: google-chrome google-chrome-extension

我正在编写一个chrome扩展,在打开的标签页中插入一个iframe并在其中加载一个url。要加载的url与选项卡中打开的页面不在同一个域中。我正在使用以下代码:

--menifest.json--

"background" : {
    "scripts": ["background.js"]
  },
  "permissions": [
    "tabs", "http://*/", "https://*/"
  ]

--background.js--

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null,
                           {file:"logic.js"});
});

--logic.js--

var newdiv = document.createElement('div');
var iframe = document.createElement('iframe');
iframe.setAttribute('src','http://google.co.in');
newdiv.appendChild(iframe);
document.body.appendChild(newdiv);

只有当curent页面为http://google.co.in而不在其他页面上时才有效。所以我遇到跨域问题。但据我所知,扩展可以发出跨域请求,然后如何做?请帮忙。

1 个答案:

答案 0 :(得分:2)

Google使用X-Frame-Options标题,许多网站都将其用作最佳做法

X-Frame-Options有三种可能的值:

  • DENY 无论网站是否尝试这样做,页面都无法在框架中显示。
  • SAMEORIGIN 页面只能显示在与页面本身相同的原始框架中。
  • 允许来自uri 页面只能显示在指定原点的框架中。

Google使用SAMEORIGIN值,因此仅当当前页面为http://google.co.in时才有效。

因此,您没有遇到跨域问题,而且是扩展可以发出跨域请求。