一起来做Chrome Extension《一些问题》
目录
- Unchecked runtime.lastError: The message port closed before a response wa received.
- 使用 eval
- Content script注入iframe
- Extenstion内的html
- 站外连接
1. Unchecked runtime.lastError: The message port closed before a response wa received.
此错误一般发生在background js和content js通讯的时候,问题描述得也非常清楚,解决方法非常简单,即在收到消息后,在同步时间里send respnose就可以了。
注意:send response如果在异步方法里,并不能解决这个问题。
// Example:
// background js 或content js
chrome.extension.onMessage.addListener(function(request, _, sendResponse) {
sendResponse('');
});
2. 使用eval
Chrome Extension默认是禁止使用eval方法的,使用之前,需要先在manifest.json里开启,如下:
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
3. 使用iframe
注入iframe同样受content_security_policy限制,而且会受到目标站点的content_security_policy限制。关于content_security_policy内容比较多,这里分成两种情况
3.1 Extension内的html
注入的iframe加载Extension内的html稍微没有这么麻烦,只需要在manifest.json里指定要加载的html就好了
"web_accessible_resources": ["example.html"]
注入iframe的src,可以使用chrome.runtime.getUrl()来获取地址
let src = chrome.runtime.getURL('example.html')
注:要注入网站的content_security_policy对这样的iframe注入会不会有影响,目前还没有测试到。
此方法在 Fika (reader-mode) 扩展里有使用
3.2 站外连接
如上所说,注入iframe是受目标网站的content_security_policy限制的,所以,如果目标网站不允许,你的注入将会失败,如medium.com的content_security_policy关于frame-src的部分:
default-src 'self';
...
frame-src chromenull: https: webviewprogressproxy: medium: 'self';
...
它允许了https的地址,所以,注入的iframe加载https地址是没有问题的,而http的地址将被拒绝。因为注入已经离开了Chrome Extenstion的范围,所以,不管你怎么对Chrome Extension的content_security_policy进行设置并不会有用。
关于content_security_policy,可以看 https://www.html5rocks.com/en/tutorials/security/content-security-policy/
一起来做Chrome Extension《一些问题》的更多相关文章
- 一起来做Chrome Extension《搭个架子》
CEF - A simple Chrome Extension development falsework CEF是一个简单的Chrome Extension开发脚手架,它有如下功能: 模块化的结构, ...
- 一起来做chrome扩展《本地存储localStorage》
chrome中的本地存储其实也是用的HTML5中localStorage,唯一区别是chrome扩展有自己的localStorage,它属于这个扩展,而不属于一个域名.得用这一点可以很好的处理扩展自己 ...
- 一起来做chrome扩展《AJAX请求》
chrome在一次更新之后,出于安全考虑,完全的禁止了content_script从https向http发起ajax请求,即使正常情况下也会在console里给出提示.这对于WEB来讲是好事,但对于扩 ...
- 开发Chrome Extension截取你微博的帐号密码
Google允许开发者对Chrome浏览器做扩展,所以有了之前火爆的12306抢票软件,我 也用它抢过票,一直很好奇它怎么注入js到12306上面的.这周有空研究了下Chrome Extension, ...
- chrome extension overview
目录 什么是扩展............................................................................................ ...
- 打包Egret游戏为Chrome extension
今天,本来是打算做一个Chrome扩展去爬取网站base64编码图片的. 在跟着图灵社区<Chrome扩展及应用开发>敲demo代码的过程中,发现chrome的扩展的结构理论上可以兼容所有 ...
- 解决chrome extension无法下载的问题
由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...
- 一起来做chrome扩展《页面右键菜单》
本文主要内容 contextMenus的设置 打开权限 创建菜单 点击菜单 background script向content script发送消息 1. contextMenus的设置 1.1 打开 ...
- SAP成都研究院安德鲁:自己动手开发一个Chrome Extension
各位好,我叫何金鑫(He Andrew), 团队同事亲切地称呼在下为安德鲁.如果你在附近找到wifi热点名为 「安德鲁森面包房5g」,可能是我就在附近,我们可以去喝杯咖啡,聊聊最近有趣的东西. 鄙人现 ...
随机推荐
- [转载] MySQL 注入攻击与防御
MySQL 注入攻击与防御 2017-04-21 16:19:3454921次阅读0 作者:rootclay 预估稿费:500RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页 ...
- C#中Array类
Array类是C#中所有数组的基类,它是在System命名空间中定义的,Array类提供了各种用于数组的属性和方法
- PLSQL 误删表恢复操作
本文转载于:https://blog.csdn.net/qiushuichangtian888/article/details/10911249
- SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,总计(合计),小计
版权声明:本文为博主原创文章,未经博主允许不得转载.本人观点或有不当之处,请在评论中及时指正,我会在第一时间内修改. https://blog.csdn.net/aiming66/article/de ...
- 常用 超全局数组$_server
$_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建.不能保证每个服务器都 ...
- 【2016 ICPC亚洲区域赛北京站 E】What a Ridiculous Election(BFS预处理)
Description In country Light Tower, a presidential election is going on. There are two candidates, ...
- MySQL->处理重复数据[20180517]
限制数据重复的方式:表上增加主键(Primary Key)或增加唯一性索引(Unique) 主键对重复资料进行限制,这样资料在导入时就无法重复插入 create table primary_t ...
- C# char[]与string互相转换的两种方法
1.string转换为char[]:char[] string.ToCharArray(); static void Main(string[] args) { s ...
- 结对编程总结by黄柏欣李斌
在十一国庆期间(当然,还有国庆之前的几天),我们进行了一个结对编程的项目.对我受益良多,在伙伴面前发现自己的渺小,在知识面前,始终输给这浩瀚的海洋,及时发现了自己的不足,这次项目,对我来说就相当于一个 ...
- 弹性布局解决ios输入框遮挡input
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...