1

我正在编写一个 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);

这仅在当前页面为http://google.co.in而不在其他页面上时有效。所以我遇到了跨域问题。但据我所知,扩展可以发出跨域请求,那么该怎么做吗?请帮忙。

4

1 回答 1

2

Google 使用X-Frame-Options标头,许多网站都将它们用作最佳实践

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

  • DENY 该页面不能在框架中显示,无论站点是否尝试这样做。
  • SAMEORIGIN 页面只能显示在与页面本身同源的框架中。
  • ALLOW-FROM uri 页面只能显示在指定原点的框架中。

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

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

于 2013-02-12T10:05:09.360 回答