在POST到受基本访问身份验证保护的资源时遇到问题。 这是代码,我正在使用@mikeal's request:
request.post({
uri: "http://user:password@mysite.com/resource",
json: {
"id": "1",
"par1": "a",
"par2": "b"
}
}, function (error, response, body) {
console.log(error);
console.log(response);
console.log(body);
});
我的错误{ [Error: Parse Error] bytesParsed: 0 }
和响应和正文中都有undefined
。如果我删除“user:password”部分,我会正确获得401 HTTP Basic:拒绝访问。
您知道是否有办法将JSON POST到受保护的资源,就像我的情况一样?如果没有,我相信我将不得不采用http模块的方式,但我将其作为最终资源,因为它更加详细。
更新:为了让这个尽可能简单,我已将此文件移到新目录中并执行了npm install request
。问题消失了,我检查了byteParsed
来自哪里,发现它是“强大的”,这是快递所需要的,我在运行此测试的目录中有。现在有点困惑。
答案 0 :(得分:4)
我是这样做的:
var options = {
method: 'POST',
uri: 'http://your.url.com/',
form: {
field1: 'somevalue',
field2: 666.66
},
headers: {
'Authorization': 'Basic ' + new Buffer("username:password").toString('base64')
}
};
request(options, function(error, response, body) {
// do stuff
});
答案 1 :(得分:2)
您必须使用以下规则为您的请求添加标头:
http://en.wikipedia.org/wiki/Basic_access_authentication
基本上你必须在base64中对字符串:username:password进行编码,并在http头中添加编码字符串:
授权:基本“Base64(用户名:密码)”
我不知道是否可以使用jquery或javascript添加标头。遗憾。