我可以在nodeJS上将请求程序设置为客户端而不是我自己的服务器吗



首先,很抱歉我的英语不好,谢谢你点击这个问题。

我只想使用来自另一个Web服务器的API来制作GUI服务(不过是简单的html(。

我的服务只向其他API提供请求的"html按钮"。

所以我只是在html上编码POST方法表单,转换APIkey和SecretKey。

我使用了"uuid"、"jsonwebtoken"模块来处理APIkey和Secretkey。(API提供商需要此(

并且还使用"请求"模块来请求API。

这是我的代码部分。

...
const request = require('request');
const { v4: uuidv4 } = require('uuid');
const sign = require('jsonwebtoken').sign
...
,(req, res)=>{
const access_key = req.keydata.apikey;
const secret_key = req.keydata.secret;
const server_url = "https://api.url.com";
const payload = {
access_key: access_key,
nonce: uuidv4(),
};
const token = sign(payload, secret_key);
const options = {
method: "GET",
url: server_url + "/v1/foo",
headers: {Authorization: `Bearer ${token}`},
}
request(options, (error, response, body) => {
if (error) throw new Error(error);
res.send(body);
})
...

但在这种方式下,不是客户端做,而是我向其他API请求。

我想将请求者设置为客户端。不是我的服务器请求的方式。

我可以向客户端发送由我的服务器使用APIkey&secKey?

之后,客户端对API进行XHR,并使用包含令牌的自定义头。

这条路上有安全问题吗?

或者有其他方式改变请求者吗?

我可以向客户端发送由我的服务器使用APIkey&secKey?

是。事实上,这是很常见的,也是经常要做的事情。(例如,AWS S3的用户会签署URL并将其发送给客户端。客户端实际上会直接向S3发出请求。(

您可以简单地使用JSON来返回客户端应该使用的URL和标头。

之后,客户端使用包含令牌的自定义头对API执行XHR。

如果需要,可以使用XHR,但请查看Fetch API。它更容易使用,并且受到浏览器的良好支持。

这条路上有安全问题吗?

不是。只要确保你在任何地方都使用HTTPS,这样你的签名URL就不会被其他人拦截和使用。

相关内容

最新更新