无法在CasperJS中复制POST请求

时间:2016-05-05 20:31:41

标签: javascript phantomjs casperjs

我正在尝试从CasperJS发出POST请求:

 for(var i in phantom.cookies)
    cookie += phantom.cookies[i].name + '=' + phantom.cookies[i].value + ';';

 casper.thenOpen(url, {
    method: 'post',
    data: {
        // some form-data
     },
    headers: {
        'Content-Type': 'multipart/form-data',
        'Cookie': cookie
    }
 }, function(response) {
    if(response.status == 200) {
        require('utils').dump(this.page.content);
    }
 });

当我在其他地方执行请求时,我得到了相应的响应,但由于某种原因,我无法在CasperJS上复制输出。以下是一个有效的cURL请求示例:

curl -X POST -H "Cookie: cookie" -H "Content-Type: multipart/form-data" -F "field=field" "url"

1 个答案:

答案 0 :(得分:0)

我的案例是CasperJS(1.1.x版)测试我的REST API。 API是在节点中编写的。在一个特定的资源中,我使用formiddable处理表单。当我在Casper中设置content-type:multipart / form-data时,该可阻止的库会抱怨此错误:错误的内容类型标题,没有多部分边界

我无法找到解决方案。相反,我最终在卡斯珀做了这个:

casper.open(<url>, {
        method: 'POST',
        data: "\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nxxx\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"upload\"\r\n\r\nhttps:\/\/url\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--",
        headers: {
            'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'
        }
    })

基本上我将主体格式化为正确的格式,这有效