通过 Chrome 扩展程序避免跨域策略

     2023-02-27     13

关键词:

【中文标题】通过 Chrome 扩展程序避免跨域策略【英文标题】:Avoid cross-origin policy via Chrome extension 【发布时间】:2019-03-20 02:34:14 【问题描述】:

站点 A 是一个网站,其 <iframe> 包含站点 B。它在带有扩展程序的 chrome 浏览器上运行。

我可以控制扩展。我想做的是让用户控制编辑站点 B 的部分内容。

当用户按下扩展程序上的按钮时,将调用以下内容。目的是加载 jQuery,以便我可以使用它,定位页面上的 iframe,进入 iframe,然后更改其主体颜色。

chrome.tabs.executeScript(null, file: 'assets/jquery.min.js', function () 
  chrome.tabs.executeScript(
    code: "jQuery('iframe').contents().find('body').css('backgroundColor', 'red');"
  );
);

站点 A 和站点 B 位于不同的域中,因此使用相同的来源策略。还值得注意的是,站点 B 没有授予站点 A 的跨源访问权限。我也不是站点 A 或站点的所有者B 所以不能修改他们的跨域策略。

我希望从扩展程序运行时,我得到用户的更多同意,以便能够绕过相同的来源策略并执行上述操作。

【问题讨论】:

如果您想将代码注入到站点 B 框架中,这是完全可行的。这是你想做的吗? iframe 的来源是否与站点 B 相同? @extempl 这些网站是两个不同的来源。 【参考方案1】:

如果您希望将脚本注入框架,您可以使用allFrames 选项将代码注入页面的所有框架。

在运行代码之前,您必须检查您是在 A 还是 B:您可以通过比较 window.selfwindow.parent 来做到这一点。在顶部框架 (A) 中,它们将是相同的对象,但在 <iframe>(如 B)中,它们将不同。

这里是:

chrome.tabs.executeScript(null, file: 'assets/jquery.min.js', allFrames: true, function () 
    chrome.tabs.executeScript(
        code: "if (self != parent) jQuery('body').css('backgroundColor', 'red');",
        allFrames: true
    );
);

注意:自 2021 年 1 月起,对于 Manivest V3,请改用 chrome.scripting.executeScript()

上述代码将同时注入 A 和 B,但只会在 B 中执行。如果 A 中有多个帧,您还必须使用例如 window.location.hostname 检查帧是否正确。

【讨论】:

如何在 Chrome 扩展程序中禁用同源策略?

...这个完全不合情理的安全问题是非常令人沮丧的。我不想通过全局禁用它来使整个浏览器不安全。仅适用于manif 查看详情

开发机上绕过chrome同源策略的办法

...为博主原创文章,未经博主允许不得转载。当需要用jQuery通过ajax或者get和post方法从本地加载文件或者跨域访问时,会受到Chrome严 查看详情

chrome总是提示“请停用开发者模式运行的扩展程序”

方法1:通过组策略的扩展白名单。要下载一个组策略管理模板1.开始->运行->输入gpedit.msc->回车确定打开计算机本地组策略编辑器(通过Win+R快捷键可以快速打开运行),如图所示:2.在打开的本地组策略编辑器中,在左侧... 查看详情

跨域 Chrome 扩展

】跨域Chrome扩展【英文标题】:CrossOriginChromeExtension【发布时间】:2016-08-2808:17:47【问题描述】:上周左右我一直在阅读和使用Chrome扩展程序,但我在尝试实现我想要的东西时遇到了麻烦。我要创建的是一个扩展,它在后台(或... 查看详情

chrome 扩展中的跨域 XMLHttpRequest

】chrome扩展中的跨域XMLHttpRequest【英文标题】:Cross-OriginXMLHttpRequestinchromeextensions【发布时间】:2012-03-1409:11:06【问题描述】:根据chrome扩展API,如果设置了权限,则应允许使用XMLHttpRequest对象进行跨域调用:只要首先请求跨域权... 查看详情

“CORS 策略已阻止访问获取”Chrome 扩展程序错误

】“CORS策略已阻止访问获取”Chrome扩展程序错误【英文标题】:\'AccesstofetchhasbeenblockedbyCORSpolicy\'Chromeextensionerror【发布时间】:2021-02-2006:10:58【问题描述】:我正在尝试从我的Chrome扩展程序的后台脚本中的外部API获取数据,使... 查看详情

Chrome 扩展程序中的 SWF 对象 - API 不可用

】Chrome扩展程序中的SWF对象-API不可用【英文标题】:SWFobjectinaChromeExtension-APIUnavaiable【发布时间】:2011-11-0814:52:04【问题描述】:嗨!我正在构建一个Chrome扩展程序,我需要在后台页面中嵌入一个SWF对象。除了SWFobject和eventListene... 查看详情

如何避免 jquery ajax 中使用 wcf 服务的跨域策略?

】如何避免jqueryajax中使用wcf服务的跨域策略?【英文标题】:howtoavoidcrossdomainpolicyinjqueryajaxforconsumingwcfservice?【发布时间】:2011-08-0620:41:49【问题描述】:jqueryajax中如何避免跨域策略使用wcf服务??我需要在web.config中对跨域策... 查看详情

防止chrome屏蔽非官方扩展程序教程

说明前面介绍过一篇通过开发人员模式载入扩展程序的方法,尽管能够正常使用,可是每次又一次打开Chrome都会弹出询问窗体,比較麻烦。这里介绍第二种防止屏蔽的方法。与前一种方法相比,尽管应用的步骤多了一点,可是基... 查看详情

跨域读取阻止 (CORB) API-调用 Chrome 扩展

...extension【发布时间】:2019-10-2201:54:52【问题描述】:我想通过我的chrome-extension的post调用一个api,问题是没有得到响应数据。我刚刚在控制台中获得了跨域读取阻塞(CORB),响应为空。跨域读取阻塞(CORB)阻止了MIME类型为ap 查看详情

Chrome 扩展内容安全策略指令错误

】Chrome扩展内容安全策略指令错误【英文标题】:ChromeextensionContentSecurityPolicydirectiveerror【发布时间】:2014-06-0616:01:56【问题描述】:我正在尝试制作无线电流chrome扩展,但出现了问题。当我像普通的JS+HTML+CSS一样在浏览器中运... 查看详情

禁用浏览器同源策略的方法

...联调的时候总会涉及到跨域,平时我们跨域主要的方法是通过cors进行跨域,但是通过cors进行跨域有的时候会涉及到数据安全的问题,这时候我们可以通过禁用本地浏览器的同源策略来进行跨域的联调ie的禁用同源策略设置,进... 查看详情

通过扩展让asp.netwebapi支持jsonp

...在大部分情况下针对的是Ajax请求。同源策略主要限制了通过XMLHttpRequest实现的Ajax请求,如果请求的是一个“异源”地址,浏览器将不允许读取返回的内容。JSONP是一种常用的解决跨域资源共享的解决方案,现在我们利用ASP. 查看详情

如何避免一连串的ifelse

...在想到要去掉ifelse这种结构来写代码,首先容易想到的是通过一个map来保存key对应的逻辑,作为一个从c++转到java开发的程序的思维是通过函数指针来解决问题,但是java并没有这么个东西,所以就有了下面这段代码逻辑了。publicc... 查看详情

Chrome 扩展“拒绝加载脚本,因为它违反了以下内容安全策略指令”

】Chrome扩展“拒绝加载脚本,因为它违反了以下内容安全策略指令”【英文标题】:ChromeExtension"RefusedtoloadthescriptbecauseitviolatesthefollowingContentSecurityPolicydirective"【发布时间】:2016-04-2905:57:34【问题描述】:我正在尝试创建... 查看详情

通过一键安装自行发布 Chrome 扩展程序

】通过一键安装自行发布Chrome扩展程序【英文标题】:SelfpublishaChromeextensionwithone-clickinstall【发布时间】:2011-01-1817:08:07【问题描述】:Chrome网上应用店一键安装扩展程序。在扩展程序的Chrome网上应用店页面中,您只需单击安装... 查看详情

如何在 chrome 扩展 manifest.json 文件中设置多个内容安全策略

】如何在chrome扩展manifest.json文件中设置多个内容安全策略【英文标题】:howtosetmultipleContentSecurityPoliciesinachromeextensionmanifest.jsonfile【发布时间】:2019-04-1210:40:48【问题描述】:在Googlechromedocumentation中,我发现我可以添加内容安... 查看详情

macchrome浏览器跨域指令快速启动应用创建,避免每次在终端输入指令

1.打开Automator2.选择Application程序3.选择shell指令4.输入chrome跨域指令5.重命名并将指令快捷程序保存到Application中6.每次直接从launchpad打开chrome跨域浏览器 查看详情