Javascript 在Chrome扩展中绕过X-Frame-Options?

Javascript 在Chrome扩展中绕过X-Frame-Options?,javascript,iframe,google-chrome-extension,x-frame-options,Javascript,Iframe,Google Chrome Extension,X Frame Options,我是一个Chrome扩展的作者,它可以让你在线查看链接,而不是新的标签。幕后并没有什么特别的东西,它只是一个iframe,加载用户点击的URL 除了那些将X-Frame-Options头设置为DENY或SAMEORIGIN的站点外,它工作得非常好。一些真正的大网站,如谷歌和Facebook都使用它,这使得一个稍微刺耳的体验 有没有办法绕过这个问题?因为我使用的是Chrome扩展,有没有什么浏览器级的东西可以让我访问?寻找任何想法或帮助 Chrome提供了拦截和修改HTTP请求的API。您可以删除

我是一个Chrome扩展的作者,它可以让你在线查看链接,而不是新的标签。幕后并没有什么特别的东西,它只是一个iframe,加载用户点击的URL

除了那些将X-Frame-Options头设置为DENY或SAMEORIGIN的站点外,它工作得非常好。一些真正的大网站,如谷歌和Facebook都使用它,这使得一个稍微刺耳的体验

有没有办法绕过这个问题?因为我使用的是Chrome扩展,有没有什么浏览器级的东西可以让我访问?寻找任何想法或帮助

Chrome提供了拦截和修改HTTP请求的API。您可以删除
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
            // '*://*.example.org/*', // Pattern to match one http(s) site
        ], 
        types: [ 'sub_frame' ]
    }, [
        'blocking',
        'responseHeaders',
        // Modern Chrome needs 'extraHeaders' to see and change this header,
        // so the following code evaluates to 'extraHeaders' only in modern Chrome.
        chrome.webRequest.OnHeadersReceivedOptions.EXTRA_HEADERS,
    ].filter(Boolean)
);

在清单中,您需要指定
webRequest
webRequestBlocking
权限,以及您打算拦截的权限,例如,
“*://*”
“*:///www.example.org/*”
,用于上述示例。

扩展可能不同,但我知道,在javascript中,目前无法知道加载是否被
X-Frame-Options
阻止。在javascript中,当页面加载被
X-Frame-Options
阻止时,不会抛出错误,也不会触发事件。我认为这是不可能的。添加X-Frame-Option有一个原因,即不能在不在域中的Iframe中对Url进行框接(如果是同一来源)。如果你能绕过这一点,这将是X-Frame中的一个安全漏洞/bug,它将在以后的版本中修复。此外,越来越多的网站正在使用此选项向其网站添加安全性,而无需做很多事情:。不过,如果能打败它,那将是令人兴奋的。这是我的2美分。@user428747,应该允许Chrome扩展做这件事。它们不是javascript,它们是“可信包”的一部分,这意味着它们应该被视为浏览器本身的一部分。我必须将它移到背景中。@IanMcIntyreSilber您好,我只是想知道您是否曾经使用过它,如果您使用过,是否可以教我。@RobW X-Frame-Options可以设置为HTML元元素,请参见:@GuyKorland I-see。Chrome扩展无法修改响应正文,因此您运气不佳。@TaiwanGrapefruitTea扩展对标题的修改不会显示在开发工具中。如果您想查看标题修改是否成功,请查看chrome://net-internals/#events.