Node.js 将基本授权传递给 odata 服务

Node.js pass Basic Authorization to odata service

我有一个使用 Node.js 和 Express 的后端,它正在连接到 Odata 服务以检索一些数据。

这样做是使用 "odata": "^1.3.1" : https://www.npmjs.com/package/odata/v/1.3.1

但是,该服务要求我在请求中通过基本身份验证。

我在他们的文档中没有看到任何关于如何这样做的信息。下面是我在路由中对服务的调用,如何向请求添加基本身份验证?

const express = require("express");
const router = express.Router();
const o = require('odata').o;

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;

router.get('/otasks', function(req, res) {
    o(process.env.ODATA_SERVER)
        .get()
        .query()
        .then(data => res.json({ payload: data }))
        .catch(error => {
            console.log(error);
            return res.json({ payload: "error" });
        });
});

module.exports = router;

Basic access authentication: When the user agent wants to send authentication credentials to the server, it may use the Authorization header field. Reference

根据包document,您可以提供headers给您的要求。那么你的逻辑代码就会变成这样:

...
o(process.env.ODATA_SERVER, {
    headers: { 'Authorization': `Basic ${Buffer.from('username:password').toString('base64')}` },
})
...