我试图在PhantomJS(2.1.1)的page.evaulate()
调用中使用WebSocket。尝试连接到WebSocket服务器时,出现以下错误:
SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent.
我可以通过转到about:config
并将security.csp.enable
设置为false来禁用Firefox中的CSP。执行此操作后,我可以将PhantomJS脚本中的相同代码粘贴到Firefox中的控制台中,没有任何问题。
是否可以在PhantomJS中禁用内容安全策略? (我尝试设置page.webSecurityEnabled = false
和page.localToRemoteUrlAccessEnabled = true
无效。)
答案 0 :(得分:4)
PhantomJS最新稳定版2.1.1在尝试获取具有以下响应标头的网页时出现错误: content-security-policy:default-src' none'
修复: 分支2.1.1,文件:\ phantomjs \ src \ qt \ qtwebkit \ Source \ WebCore \ page \ ContentSecurityPolicy.cpp ,更改第354行:
, m_allowEval(false)
要:
, m_allowEval(true)
然后build.py -r ...享受!