我正在尝试从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"
答案 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'
}
})
基本上我将主体格式化为正确的格式,这有效