API服务器在登录后给出401错误

API Server giving 401 error after login

本文关键字:错误 服务器 登录 API      更新时间:2023-09-26

我已经成功登录到API服务器使用以下代码在meteorjs

var request = Npm.require('request');
        request('http://api-server-link-here',
        {
            'auth' : {
                'user': 'username',
                'pass': 'password',
                'sendImmediately': false
            }
        }
        , function (error, response, body) {
         if (!error && response.statusCode == 200) {
                console.log(response);
        } 

但是在这个登录之后,当我使用下面的代码去使用搜索查询。我得到Http状态401错误。

var request = Npm.require('request');
         request("http://search-query-link-here",
         {
        //search query parameters are here
         },

         function(error,response,body){
        console.log(response);
         });

谁能告诉我为什么这个问题会发生?或者如果这是可能的,我在这里得到一个工作的例子?

这里需要说明的另一件事是,我在摘要身份验证的帮助下进行登录。

显然,很难为您提供一个未知API的工作示例。

让我们试着把它弄清楚。从逻辑上讲,当你发送搜索查询时,你应该表明自己的身份。大多数公共API服务器使用令牌(很可能)或会话cookie来授权对资源的访问。所以,每当你做第二个(搜索)请求时,你要么提供一个令牌,要么发送一个你从第一个(登录)请求中得到的cookie。

长话短说,验证API服务器正在使用哪种机制。

  • 如果是令牌:检查来自登录请求的响应体;最有可能的是,你会在API调用的Authorization头中发送一个访问令牌:headers: {'Authorization': 'Bearer ...'}在你的请求选项中;
  • 如果是会话:确保在登录时启用cookie罐,并在后续请求时启用:https://github.com/mikeal/request#requestjar