我正在使用带有请求的 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/