将节点快速会话传递给 phantomjs 打开

pass node express session to phantomjs open

我的应用程序有一个路由 /project/:id,该路由受身份验证中间件保护,该中间件使用护照允许访问者使用他们的 Slack 帐户进行身份验证。

我想使用 phantomJS 将 /project/:id 渲染为 pdf。我认为最好的方法是创建一个路由 /print/:id (相同的身份验证中间件),它创建一个幻像实例并使用 open 方法请求 /project/:id.

请求/print/:id时,浏览器会话检测正常,没问题。但是当 phantom 执行内部请求时,它的会话未被授权。最好的选择似乎是将浏览器会话复制到虚拟会话中。

我注意到 phantom 的 open 方法允许 settings parameter,但我不知道请求对象的哪些属性需要传递给该设置参数。

我注意到有一个类似的 question regarding cookies 但那里没有明确的解决方案,如果我理解正确,当您无权访问会话时,重新创建 cookie 可能更适合访问第三方本身。

我从问题中推断出您是应用程序的开发者并且在与该项目相同的服务器上安装了 PhantomJS。

如果那是真的,最简单且非常可靠的解决方案是检查 /project/:id 的请求是否是本地请求以及 useragent 是否是 PhantomJS 的,并在那时禁用 auth 中间件。