javascript - 如何在 PhantomJS 脚本中将 customHeaders 作为系统参数传递?

标签 javascript header phantomjs

我已经开始使用 PhantomJS 进行屏幕截图的小型概念验证,我将获得所有必要的配置作为系统参数,例如 URL、超时、isScreenshotReqd、isHarFileReqd、isHeadersReqd、用户名、密码和一些应用程序相关配置。除了 customHeaders 之外,一切正常。

我使用的代码是

if (system.args.length === 1) {
    console.log('Usage: phantom.js <some URL>');
    phantom.exit(1);
} else {
    assembleId = system.args[2];
    page.address = system.args[3];
    page.settings.resourceTimeout = system.args[4];
    isScreenshotReqd = system.args[5];
    isHeadersReqd = system.args[6];
    isHarFileReqd = system.args[7];
    page.settings.userName = system.args[8];
    page.settings.password = system.args[9];
    var key = "headerKey";//(or system.args[10])
    var value = "headerValue";//(or system.args[11])
    page.customHeaders = {key : value};
   //some operation
}

这将 customHeader 设置为

"headers": [{"name": "key","value": "headerValue"}]

您可以看到该值设置正确,但 key 不是从初始化变量或 system.args[x] 中获取,而是采用我使用的任何变量。

尽管如果我像这样对 customHeaders 进行硬编码,它就会起作用

page.customHeaders = {"headerKey": "headerValue"};

给出了预期的输出,但问题是我将拥有各种 URL 的动态 header 。这意味着它是配置驱动的,每个客户将为每个 URL 提供不同的 header 。

最佳答案

JavaScript 不允许使用变量作为对象键。您必须以这种方式设置变量键:

var key = "some dynamic key";
var value = "some value"
var obj = {};
obj[key] = value;

PhantomJS 的 customHeaders 的另一个问题是它需要作为一个整体进行设置。 PhantomJS 没有注意到 customHeaders 对象的属性已更改。您可以像这样使用它:

var key = "headerKey";
var value = "headerValue";
var customHeaders = {};
customHeaders[key] = value;
page.customHeaders = customHeaders;

关于javascript - 如何在 PhantomJS 脚本中将 customHeaders 作为系统参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37428722/

相关文章:

javascript - 通过 JavaScript 删除 anchor ,但不删除参数

javascript - 如何对自定义元素进行单元测试

c - fatal error : No such file or directory for header file

java - 不需要的 Tomcat 服务器连接

javascript - jQuery - 选择输入字段的关联标签元素

javascript - HTML/Javascript - '&lt;input type=text' 交互发生了什么?

php - 用php输出mp3

php - 如何修复PHP中的“ header 已发送”错误

angularjs - Protractor 测试在 Chrome/Firefox 中完成,但在 phantomjs 中失败

javascript - 无法在 karma 中加载 phantomjs 网页和系统模块