幻像节点模块无法加载外部资源

时间:2014-05-04 20:16:49

标签: node.js phantomjs

我正在使用nodejs服务器,该服务器将发布的html呈现为pdf,png或jpg。 (https://github.com/svenhornberg/pagetox(server.js),如果你想尝试的话)

它工作得非常好,渲染复杂的网站,但只是我想要加载一个简单的图像。例如,我将以下代码发送到我的服务器:

<!doctype html>
<html>
<head>
  <title>logo</title>
</head>
<body>
  <img alt="logo" src="http://upload.wikimedia.org/wikipedia/commons/d/de/Wikipedia_Logo_1.0.png">
</body>
</html>

守则应该没问题。 但渲染的响应图片不包含徽标图片。 正如phantomjs文档(http://phantomjs.org/api/webpage/property/settings.html)中所述,localToRemoteUrlAccessEnabled设置为false,因此将其设置为true,如幻像节点(https://github.com/sgentle/phantomjs-node/)文档中所述:

  page.set('settings.localToRemoteUrlAccessEnabled', true);
  page.set('settings.loadImages', true);

为了证明它设置为true,我调用了一个返回true的getter

  page.get('settings.localToRemoteUrlAccessEnabled', function(data) { console.log(data);});

我使用节点v0.10.26与phantomjs-node(0.6.1),linux上的phantomjs(1.9.7)

现在问题是,是否有人看到错误?或者可以给我一个提示我做错了什么。或任何其他可能性为什么phantomjs / phtanom-node没有加载任何外部图像

我正在使用render方法生成png,jpg或pdf文件。我将evaluate函数中的方法作为回调调用,因此应该完全加载该站点。 (完整代码位于https://github.com/svenhornberg/pagetox/blob/master/server.js

Edit1:我不在代理之后,可能会阻止请求。

2 个答案:

答案 0 :(得分:0)

您想要设置的是

page.set('settings.webSecurityEnabled', false);

启用跨域请求。另一个选项localToRemoteUrlAccessEnabled不会影响您的情况,因为您不使用file:资源,而是覆盖:空白。

其他问题可能与SSL / TLS有关。请参阅我的回答here以获取更多帮助。

答案 1 :(得分:0)

看起来我需要设置超时并等待所有外部资源都被加载。

page.set('content') dosen't work with dynamic content in phantomjs

我让它工作,但暂停不是我想要的。如果我发现任何更好的方式我会发布它。