nodejs https#请求失败,其中相同的curl请求成功
问题描述:
我正在尝试连接到twitter api的公共流端点。nodejs https#请求失败,其中相同的curl请求成功
,当我跑的示例参数我从Twitter的API测试工具中的NodeJS了,我得到401 unauthorized
错误下面你可以看到我的NodeJS例如要求
'use strict';
const https = require('https');
const qs = require('querystring');
const obj = {
method: "POST",
headers: {
Authorization: 'OAuth oauth_consumer_key="pXZ8xSWvjZjE4UaNntVsCwWPg", oauth_nonce="776f1a4ec0c3ed9ecbfb68aa0f7e2324", oauth_signature="jk8e84V0OcgcepkL7F%2BXt2fAy8o%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1463258508", oauth_token="416282416-vFTMVJCFiRW8G6nwoFhH3OBqrJsKDbIJ93sbOm2a", oauth_version="1.0"'
},
hostname: "stream.twitter.com",
path: "/1.1/statuses/filter.json"
}
https.request(obj,res => {
res.on("data", d => {
console.log(d.toString());
});
}).end(qs.stringify({track:"javascript"}))
但是,如果我用卷曲发送该请求,它完美的作品在这里我的例子卷曲请求
curl --request 'POST' 'https://stream.twitter.com/1.1/statuses/filter.json' --data 'track=javascript' --header 'Authorization: OAuth oauth_consumer_key="pXZ8xSWvjZjE4UaNntVsCwWPg", oauth_nonce="776f1a4ec0c3ed9ecbfb68aa0f7e2324", oauth_signature="jk8e84V0OcgcepkL7F%2BXt2fAy8o%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1463258508", oauth_token="416282416-vFTMVJCFiRW8G6nwoFhH3OBqrJsKDbIJ93sbOm2a", oauth_version="1.0"' --verbose
我在做什么错?他们是tottaly相同的请求。
'curl'给你一些很好的调试信息,但是'node.js'代码没有。你可以使用https://www.npmjs.com/package/request-debug获得一些调试输出吗?这可能会告诉你以何种方式请求不相同 –
可以肯定的是,你不是先调用'curl',然后重复使用与node.js相同的nonce,对吧? – mdickin
@mdickin这只是一个例子,我创建了一个示例,从Twitter上的API工具调用它通过卷曲它的作品,然后创建新的调用它与nodejs它失败 – nikoss