我使用Empythoned生成的javascript来创建Chrome extension。 Python import
在Chrome扩展中不起作用,因为它在Web应用程序中起作用。这是demo。
import collections
print collections
<module 'collections' from '/lib/python2.7/collections.py'>
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有关?
答案 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攻击媒介,所以在你的扩展中允许它时应该小心。