Nodejs - superagent-http-signature - 未发送签名
Nodejs - superagent-http-signature - signature not sent
我正在使用 this site
var superagent = require('superagent');
var superagentHttpSignature = require('superagent-http-signature');
superagent
.get('http://project.dev/api/v3/project/tasks/get?task_id=1026')
.set('Accept', 'application/json')
.set('x-app-key', 'MY_ACCESS_KEY')
.set('x-app-trusted', 'key=None')
.use(superagentHttpSignature({
headers: ['(request-target)', 'Accept', 'x-app-key', 'x-app-trusted'],
algorithm: 'hmac-sha256',
key: 'MY_ACCESS_KEY',
keyId: 'MY_SECRET_KEY'
}))
.end(function(err, res) {
// console.log(err);
console.log(res.body);
});
节点版本:v4.2.1
如果我检查服务器上的签名 header(运行 PHP 顺便说一下,它有自己的签名验证器,使用相同的规范)签名 header 不见了。
有什么我想念的吗?或者是否有任何具有相同功能的替代节点包?
我这样做的目的是能够使用 PHP 以外的其他语言调用 API 作为概念证明,这样我以后就可以将其用于 AWS Lambda 计划任务。
您的代码有效,错误出在您的服务器端。也许 PHP 和代码(Apache?nginx?)之间的某些东西正在过滤 headers。
GET /api/v3/project/tasks/get?task_id=1026 HTTP/1.1
Host: project.dev
Accept-Encoding: gzip, deflate
User-Agent: node-superagent/1.8.0-beta.2
Accept: application/json
x-app-key: MY_ACCESS_KEY
x-app-trusted: key=None
Authorization: Signature keyId="MY_SECRET_KEY",algorithm="hmac-sha256",headers="(request-target) Accept x-app-key x-app-trusted",signature="9ietyIsW8nPH6BqwiePqsDefQpGUFERoV7wEaQ9UUGQ="
Connection: close
我正在使用 this site
var superagent = require('superagent');
var superagentHttpSignature = require('superagent-http-signature');
superagent
.get('http://project.dev/api/v3/project/tasks/get?task_id=1026')
.set('Accept', 'application/json')
.set('x-app-key', 'MY_ACCESS_KEY')
.set('x-app-trusted', 'key=None')
.use(superagentHttpSignature({
headers: ['(request-target)', 'Accept', 'x-app-key', 'x-app-trusted'],
algorithm: 'hmac-sha256',
key: 'MY_ACCESS_KEY',
keyId: 'MY_SECRET_KEY'
}))
.end(function(err, res) {
// console.log(err);
console.log(res.body);
});
节点版本:v4.2.1
如果我检查服务器上的签名 header(运行 PHP 顺便说一下,它有自己的签名验证器,使用相同的规范)签名 header 不见了。
有什么我想念的吗?或者是否有任何具有相同功能的替代节点包?
我这样做的目的是能够使用 PHP 以外的其他语言调用 API 作为概念证明,这样我以后就可以将其用于 AWS Lambda 计划任务。
您的代码有效,错误出在您的服务器端。也许 PHP 和代码(Apache?nginx?)之间的某些东西正在过滤 headers。
GET /api/v3/project/tasks/get?task_id=1026 HTTP/1.1
Host: project.dev
Accept-Encoding: gzip, deflate
User-Agent: node-superagent/1.8.0-beta.2
Accept: application/json
x-app-key: MY_ACCESS_KEY
x-app-trusted: key=None
Authorization: Signature keyId="MY_SECRET_KEY",algorithm="hmac-sha256",headers="(request-target) Accept x-app-key x-app-trusted",signature="9ietyIsW8nPH6BqwiePqsDefQpGUFERoV7wEaQ9UUGQ="
Connection: close