如何使用节点请求发送不记名令牌和 x-www-form-urlencoded 数据
Posted
技术标签:
【中文标题】如何使用节点请求发送不记名令牌和 x-www-form-urlencoded 数据【英文标题】:How to send bearer token and x-www-form-urlencoded data using Node Request 【发布时间】:2019-06-06 20:11:39 【问题描述】:我想使用节点模块request 复制这个 Postman 调用。请参阅屏幕截图。
Screenshot
Screenshot2
如屏幕截图所示,在我的请求中,我需要传递 bearer token
以及 x-www-form-urlencoded
值。我尝试遵循此SO post 的前 2 个答案,但没有成功。
我基本上都试过了
let form =
"field1": value1,
"filed2": value2
;
let headers =
'Content-Type' : 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + token
request.post( url: "https://myapp.net/myendpoint", form: form, headers: headers , function(err, res, success)
console.log(success);
);
还有
let form =
"field1": value1,
"field2": value2
;
var formData = querystring.stringify(form);
let options =
uri: "https://myapp.net/myendpoint",
method: 'POST',
auth:
'bearer': token
,
headers:
'Content-Type' : 'application/x-www-form-urlencoded'
,
body: formData
;
request.post(options, function(err, res, success)
console.log(success);
);
有人能告诉我正确的方法吗?
编辑:
澄清一下:这些请求的结果是 400 状态。如果我发送 form-data
,我也会在 Postman 上获得 400,但如果我发送 x-www-form-urlencoded
,那么它会在 postman 中成功。我不知道如何在请求中执行此操作。
【问题讨论】:
请求是什么样的?什么告诉你这不起作用?你有错误信息吗? 400 个未授权状态@joshuakcockrell 这意味着它正在攻击服务器,但有趣的是,如果我发送form-data
,我也会在邮递员上获得 400,如果我发送x-www-form-urlencoded
,那么它会在邮递员中成功。我不知道如何在request
中做到这一点
我猜您无法控制服务器,否则您会知道的不仅仅是 400 错误。尝试将此请求发送到httpbin.org/post,它将向您展示您的请求在服务器上的外观。将其与发送到 httpbin 的邮递员请求进行比较。这至少会为你缩小问题的范围。 400 错误代码非常通用,因此您需要在此处了解更多信息。
尝试跳过 content-type 并使用 form: "field1": value1, "field2": value2
而不是 body 和 stringify..
【参考方案1】:
试试这个
let options =
uri: "https://myapp.net/myendpoint",
method: 'POST',
headers:
'Authorization' : 'Bearer ' + token
,
form:
"field1": value1,
"field2": value2
;
;
request.post(options, function(err, res, success)
console.log(success);
);
内容类型应该自动设置
【讨论】:
以上是关于如何使用节点请求发送不记名令牌和 x-www-form-urlencoded 数据的主要内容,如果未能解决你的问题,请参考以下文章
赛普拉斯:我们如何在赛普拉斯中使用不记名令牌编写 GET 请求?