通过事件添加请求标头:CasperJS中的page.resource.requested

时间:2014-06-18 12:05:04

标签: javascript phantomjs casperjs

我尝试(没有成功)通过事件向请求添加自定义标头:

 casper.on("page.resource.requested",function(requestData,request){...}

类似的东西:

casper.on("page.resource.requested",function(requestData,request){

     request.setHeader("X-myHeader", "123");
}

我以为我能做到这一点,因为在PhantomJS中你可以写:

 page.onResourceRequested = function(requestData, networkRequest) {
      networkRequest.setHeader("X-myHeader", "123");
 }

casper对象的事件中添加请求标头有哪些选择?

1 个答案:

答案 0 :(得分:3)

在最新版本1.9.7中,存在错误request in onResourceRequested has no setHeader function #12264。您需要使用早期版本的phantomjs。

之所以产生差异,是因为您在命令行和casperjs中使用了不同版本的phantomjs。在Windows中,您可以在此文件夹中找到casper的幻像:

C:\Users\someuser\AppData\Roaming\npm\node_modules\casperjs\node_modules\phantomjs

您可以做的两件最简单的行动是

  • 添加可用于PATH的工作幻像(casper将使用它)

    OR

  • 使用工作的phantomjs版本

    覆盖casperjs\node_modules\phantomjs\lib\phantom内的可执行文件

    OR

  • 让npm为您下载该版本

最后一点的步骤是:

  1. 通过从命令行调用phantomjs --version

  2. 找出它适用的phantomjs版本
  3. 在命令行

    中切换到以下文件夹
    C:\Users\someuser\AppData\Roaming\npm\node_modules\casperjs
    
  4. 安装你的工作版本(我实际上并不知道哪一个有效,所以我在这里使用1.9.0)

    npm install phantomjs@1.9.0-x
    

    您可以致电npm show phantomjs来查看可用的版本。