casperjs empy POST 提交大值时的数据

casperjs empy POST data when large values are submitted

我有一个已加载的表单,我只是简单地提交了该表单。在表单中有一个 input type=hidden 字段,其中存储了一些长字符串。这在常规浏览器上工作正常,不适用于 casper。在分析这一点时,apache 本身正在从 casper 获取空 POST 数据。如果我减少隐藏输入的数据,它就可以正常工作。在 casper 中是否有大小限制或定义的内容?

代码如下:

var casper = require('casper').create();

casper.start('http://localhost/loadForm', function() {
   // Wait for the page to be loaded
   this.waitForSelector('form[action="/saveConfig"]');
});

casper.then(function() {
    this.evaluate(function() {
        $('#form').submit();
    });
});

casper.run();

下面的错误报告对我有帮助。我认为这是一个 phantomjs 错误。隐藏字段之一是存储 base64 png 图像,在我的 html 页面中,它由 canvas.toDataURL("image/png") 填充。与实际浏览器相比,这在 casperjs 中产生不同的 base64。这导致 $_POST 在 php 中为空。但是当我尝试 file_get_contents("php://input") 时,数据全部存在。我使用 canvas.toDataURL("image/png", 0) 解决了这个问题。第二个参数在浏览器和 casperjs 中产生一致的输出。

https://github.com/ariya/phantomjs/issues/10455