node.js - Express.js 和请求 : Headers unexpectedly reset themselves

标签 node.js authentication express request request-headers

我正在使用带有请求的 Express 来与 API 进行通信;一些 Controller 文件使用导出,这样我就可以保持路由文件漂亮。

module.exports = function(app){

  var moment = require('moment'),
      request = require('request'),
      auth = require('../auth/auth.js')(app),
      apiUrl = process.env.API_URL;

  return {

    addProduct: function addProduct(req,res) ...

request.defaults 在 auth 文件中设置,登录会调用其中的函数来设置 header ,以在整个应用程序中对用户进行身份验证。

auth.setToken = function(token, type, access) {
  auth.request = request.defaults({
    headers: {
      'x-access-token': token,
      'x-access-type': type,
      'x-access-level': access,
    }
  });
};

然后将 request 与一些 mods 结合使用。

auth.request.get(apiPath, function(err, apiRes) {
  res.render(renderView, {
    items: items,
  });
});

“用户”文件中的一切都运行良好,但我刚刚添加了几个其他 Controller 文件,并且由于某种原因,这些文件中的每个函数中的 header 都会重置(因此我的身份验证丢失)。我可以将“用户”文件复制并粘贴到其他文件中,但会遇到同样的问题,或者我可以将其他文件中所需的内容放回到“用户”文件中,它会再次正常工作。我不知道我做错了什么,但如果我只有一个文件,那就会很困惑......有什么想法吗?

最佳答案

弄清楚了 - 这是一个变量没有按照我假设的方式在 Controller 文件之间传递的问题,所以我创建了一个新函数来将 token 从 session 复制回 header 中,一切都得到了解决。

关于node.js - Express.js 和请求 : Headers unexpectedly reset themselves,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27777894/

相关文章:

node.js - 在 Node 中提供 gzip 文件会在浏览器中抛出 net::ERR_CONTENT_DECODING_FAILED

ruby-on-rails - 使用 Devise 将可确认模块添加到现有站点

node.js - 从 GraphQL resolve 返回文件

node.js - 尝试使用聚合查找和更新时出现错误 "pipeline element 3 is not an object error"

javascript - 我怎样才能停止发送 promise ,直到 for-each 循环生成一个将作为 promise 发送的数组

javascript - Puppeteer 循环并转换为对象

java - 在多个安全检查之间传递安全上下文数据

authentication - 关闭 Cakephp Auth 密码散列

javascript - gzip 仅以纯文本形式返回 html

express - 如何在express.js中异步使用app.get?