带有标头和身份验证的 npm 请求
Posted
技术标签:
【中文标题】带有标头和身份验证的 npm 请求【英文标题】:npm request with headers and auth 【发布时间】:2015-07-20 03:51:26 【问题描述】:我正在尝试使用“请求”npm 访问 API。此 API 需要标头“内容类型”和基本身份验证。这是我到目前为止所做的。
var request = require('request');
var options =
url: 'https://XXX/index.php?/api/V2/get_case/2',
headers:
'content-type': 'application/json'
,
;
request.get(options, function(error, response, body)
console.log(body);
).auth("dummyemail@abc.com","password",false);
使用 Node 执行此操作时,我收到一条错误消息,提示用户名和密码无效。我已经使用 CURL 和下面的命令验证了相同的 API、身份验证和标头,它给出了预期的 HTTP 响应。
curl -X GET -H "content-type: application/json" -u dummyemail@abc.com:password "https://XXX/index.php?/api/V2/get_case/2"
请建议使用身份验证和标头对请求进行编码的正确方法。
这是我的更新代码
var auth = new Buffer("dummy@gmail.com" + ':' + "password").toString('base64');
var req =
host: 'https://URL',
path: 'index.php?/api/v2/get_case/2',
method: 'GET',
headers:
Authorization: 'Basic ' + auth,
'Content-Type': 'application/json'
;
request(req,callback);
function callback(error, response, body)
console.log(body);
我在控制台中看到“未定义”。你能帮帮我吗?
【问题讨论】:
【参考方案1】:request(url,
method: "POST",
auth:
user: this.user,
pass: this.pass
, function (error, response, body)
if (!error && response.statusCode == 200)
console.log('body:', body);
else
console.log('error', error, response && response.statusCode);
);
【讨论】:
【参考方案2】:这对我来说是这样的
var auth = new Buffer(user + ':' + pass).toString('base64');
var req =
host: 'https://XXX/index.php?/api/V2/get_case/2',
path: path,
method: 'GET',
headers:
Authorization: 'Basic ' + auth,
'Content-Type': 'application/json'
;
【讨论】:
感谢您的回答。这是我对您的建议所做的尝试。 @Praveen Kumar:在我看来,Katerina 的回答完全正确,应该被接受为答案以上是关于带有标头和身份验证的 npm 请求的主要内容,如果未能解决你的问题,请参考以下文章
Invoke-RestMethod:发送到标头时找不到请求的身份验证数据
为啥我的 REST 服务 .NET 客户端会在没有身份验证标头的情况下发送每个请求,然后使用身份验证标头重试?
HTTP 请求未经客户端身份验证方案“协商”的授权。从服务器收到的身份验证标头是“NTLM”