无法为具有可变脚本地址的 chrome newtab 扩展加载脚本“Content-Security-Policy”

Posted

技术标签:

【中文标题】无法为具有可变脚本地址的 chrome newtab 扩展加载脚本“Content-Security-Policy”【英文标题】:Can't load script 'Content-Security-Policy' for chrome newtab extension with variable script address 【发布时间】:2019-01-07 07:12:19 【问题描述】:

我正在制作一个 chrome newtab 扩展,通过查询雅虎天气来加载用户天气。我收到来自 chrome 的“Content-Security-Policy”违规,说我无法加载脚本:

拒绝执行内联脚本,因为它违反了以下内容 内容安全策略指令:“script-src 'self' blob: 文件系统:chrome-extension-resource:”。要么是“不安全的内联” 关键字,哈希 ('sha256-PeWalvgfJE6xbsZk1lp14cxuyPBUbuIbzFNlAxarXxU='),或随机数 ('nonce-...') 是启用内联执行所必需的。

这是我的清单:


    "name": "WeatherTodo",
    "version": "1.0",
    "description": "Extension that shows a weather animation and todolist",
    "manifest_version": 2,
    "permissions": ["storage"],
    "chrome_url_overrides": 
        "newtab": "index.html"
    

问题在于查询是不同的 URL,具体取决于用户所在的位置,因此我不确定是否可以将其作为安全链接添加到清单。请帮忙。

我认为这是导致错误的行,我不确定,因为 chrome 指向具有我的脚本标记的 html 行:

fetch("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(SELECT%20woeid%20FROM%20geo.places%20WHERE%20text%3D%22(" 
                + position.coords.latitude + "%2C" + position.coords.longitude 
                + ")%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys")

【问题讨论】:

onClick within Chrome Extension not working的可能重复 TL;DR,把你的js代码放到一个单独的文件中,通过<script src=...>标签加载。 【参考方案1】:

您不能在 HTML 中使用内联脚本,因为它很容易发生脚本注入,因此 Chrome 对此进行了限制。你可以阅读Content Security Policy (CSP)

【讨论】:

以上是关于无法为具有可变脚本地址的 chrome newtab 扩展加载脚本“Content-Security-Policy”的主要内容,如果未能解决你的问题,请参考以下文章

chrome无法从该网站添加应用扩展程序和用户脚本的有效解决方法!

Loadrunner12解决无法录制chrome及脚本为空问题

你竟然不装油猴插件-Chrome神器TamperMonkey

oracle:查询具有可变日期的时间戳

无法覆盖“UIRefreshControl”类型的可变属性“refreshControl”?具有协变类型“UIRefreshControl”

无法使用 chrome.bluetoothLowEnergy 从 iOS 外围设备获取服务