在 PhantomJS 中禁用内容安全策略

Disable Content Security Policy in PhantomJS

我正在尝试在 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 = falsepage.localToRemoteUrlAccessEnabled = true 无济于事。)

PhantomJS 最新稳定版 2.1.1 在尝试获取具有以下响应的网页时存在错误 header: 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 ... 享受吧!