在Chrome扩展程序中解决X-Frame-Options DENY问题?

时间:2013-03-20 19:20:14

标签: javascript iframe google-chrome-extension x-frame-options

我是Intab的作者,这是一个Chrome扩展程序,可让您查看内联链接而非新标签。幕后没有太多花哨的东西,它只是一个加载用户点击的URL的iframe。

除了将X-Frame-Options标头设置为DENY或SAMEORIGIN的网站外,它的效果很好。谷歌和Facebook等一些非常大的网站都使用它,这使得体验稍微有点笨拙。

有没有办法解决这个问题?由于我使用的是Chrome扩展程序,我可以访问哪些浏览器级别的内容可能会有所帮助吗?寻找任何想法或帮助!

1 个答案:

答案 0 :(得分:60)

Chrome提供了webRequest API来拦截和修改HTTP请求。您可以删除X-Frame-Options标题以允许在iframe中内嵌网页。

chrome.webRequest.onHeadersReceived.addListener(
    function(info) {
        var headers = info.responseHeaders;
        for (var i=headers.length-1; i>=0; --i) {
            var header = headers[i].name.toLowerCase();
            if (header == 'x-frame-options' || header == 'frame-options') {
                headers.splice(i, 1); // Remove header
            }
        }
        return {responseHeaders: headers};
    },
    {
        urls: [ '*://*/*' ], // Pattern to match all http(s) pages
        types: [ 'sub_frame' ]
    },
    ['blocking', 'responseHeaders']
);

在清单中,您需要指定webRequestwebRequestBlocking权限,以及您打算拦截的网址格式。