如何使用节点请求发送不记名令牌和 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 数据的主要内容,如果未能解决你的问题,请参考以下文章

使用不记名令牌授权 Azure 请求?

Flutter Web:如何发送不记名令牌?

赛普拉斯:我们如何在赛普拉斯中使用不记名令牌编写 GET 请求?

如何在 laravel 中使用不记名令牌从 api 请求中获取响应?

JWT中令牌之前的不记名

java - 如何从Java Spring Boot中的请求标头获取不记名令牌?