发布到受基本访问授权保护的资源
问题描述:
我在POST过程中受到基本访问身份验证保护的资源时遇到问题。 下面是代码,我使用@mikeal's request:发布到受基本访问授权保护的资源
request.post({
uri: "http://user:[email protected]/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
在这两个反应和身体。如果我删除“用户:密码”部分我正确地得到一个401 HTTP基本:访问被拒绝。
你知道是否有办法将POST JSON发布到受保护的资源,就像我的情况一样?如果没有,我相信我必须去http模块的方式,但我将它作为最终的资源,因为它更加冗长。
更新:为了尽可能简单,我已将此文件移动到新目录中,并执行了npm install request
。问题消失了,我检查了byteParsed
来自哪里,发现它是“强大的”,这是express所要求的,这是我在运行此测试的目录中所必需的。现在有点困惑。用base64密码和HTTP标头中添加编码字符串:
答
您必须将头添加到您的要求与此规则:
http://en.wikipedia.org/wiki/Basic_access_authentication
基本上你必须编码字符串:用户名
授权:基本“Base64(用户名:密码)”
我不知道是否有可能添加标题与jQuery或JavaScript。抱歉。
答
我做了这样的:
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
});
谢谢您的回答;我已经更新了我的问题,因为我发现将代码移动到干净的目录“解决”了问题。我说“解决”是因为我需要在前一个文件夹中,我认为我遇到了一些不兼容问题。我正在查看你的链接,但肯定看起来有些可能。 – 2012-03-06 18:07:35
谢谢!我已经按照你的建议解决了这个问题:D奇怪的是,这是我使用的库已经做的事情,我几乎从那里复制了解决方案,今晚我会研究它。再次感谢。 – 2012-03-06 18:25:00