empythoned中的import语句在chrome扩展中不起作用

时间:2013-05-17 08:49:27

标签: javascript python-2.7 google-chrome-extension empythoned

我使用Empythoned生成的javascript来创建Chrome extension。 Python import在Chrome扩展中不起作用,因为它在Web应用程序中起作用。这是demo

示例代码:

Web App

输入

import collections
print collections

输出

<module 'collections' from '/lib/python2.7/collections.py'>

Chrome扩展程序

输入

import collections

输出

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/lib/python2.7/collections.py", line 8, in <module>
from _collections import deque, defaultdict
ImportError: Could not evaluate dynamic lib: //lib/python2.7/_collections.so

是否与Chrome扩展处理JS有关?

1 个答案:

答案 0 :(得分:1)

Empythoned正在尝试使用eval()代码,默认情况下Chrome会限制eval()在扩展程序中使用。

有关内容安全策略的更多详细信息,请访问:

https://developer.chrome.com/extensions/contentSecurityPolicy

如果您添加此行以放宽安全策略到您的扩展程序manifest.json,您应该能够导入这些模块:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

正如文档警告的那样,eval()是一个臭名昭着的XSS攻击媒介,所以在你的扩展中允许它时应该小心。