API Server在登录后出现401错误

时间:2014-03-10 13:33:45

标签: javascript node.js meteor

我已使用meteorjs中的以下代码成功登录API服务器

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 Status 401错误。

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

         {

        //search query parameters are here

         },


         function(error,response,body){

        console.log(response);

         });

有人可以指点一下为什么会出现这个问题。或者,如果有可能我在这里得到一个有效的例子?

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

1 个答案:

答案 0 :(得分:0)

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

但我们只是试着解决它。从逻辑上讲,当您发送搜索查询时,您应该识别自己。大多数公共API服务器使用令牌(最可能)或会话cookie来授权访问资源。因此,无论何时执行第二次(搜索)请求,您都可以提供令牌或发送您从第一次(登录)请求获得的cookie。

简而言之,请确认API服务器正在使用哪种机制。

  • 如果是令牌:从登录请求中检查响应正文;最有可能的是,您会在API调用的Authorization标题中发送一个访问令牌:headers: {'Authorization': 'Bearer ...'}在您的请求选项中;
  • 如果是会话:请确保您在登录时启用了cookie jar,并将其用于后续请求:https://github.com/mikeal/request#requestjar