我已经使用 node.js 和 express 构建了一个 API。但是我需要能够将特定路由上的一些请求代理到外部服务器,并显示从外部服务器到执行请求的 clint 的响应。
但我还需要转发客户端与请求一起发送的基本身份验证。
我尝试过使用请求模块,例如:
app.get('/c/users/', function(req,res) {
//modify the url in any way you want
var newurl = 'https://www.external.com'
request(newurl).pipe(res),
})
但它似乎没有发送基本的身份验证标头,因为我从外部服务器(www.external.com)返回“403 Forbidden”
我提出的请求如下所示:
GET http://example.se:4000/c/users/ HTTP/1.1
Accept-Encoding: gzip,deflate
X-version: 1
Authorization: Basic bmR4ZHpzNWZweWFpdjdxfG1vcmV1c2*******=
Accept: application/json
Host: example.se:4000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
如果我执行完全相同的请求但直接针对 www.external.com,它会起作用,因此在节点中执行代理时会出现一些问题。