如何解决AWS Lambda函数中反向代理服务器的实现
const app = require('express')();
const { createProxyMiddleware } = require('http-proxy-middleware');
app.all('*',createProxyMiddleware({ target: 'https://www.google.com/',changeOrigin: true
}));
const awsServerlessExpress = require('aws-serverless-express');
const server = awsServerlessExpress.createServer(app);
exports.handler = (event,context) => awsServerlessExpress.proxy(server,event,context);
这是我正在使用的代码。我的要求是实施反向代理服务器。问题是我在浏览器中遇到以下错误:
获取http://127.0.0.1:3000/净额:: ERR_CONTENT_DECODING_FAILED 200(确定)
服务器正确发送了响应,但是压缩存在问题。
我尝试将以下Mime类型作为第三个参数传递给createServer函数:
const binaryMimeTypes = [
'application/javascript','application/json','application/octet-stream','application/xml','font/eot','font/opentype','font/otf','image/jpeg','image/png','image/svg+xml','text/comma-separated-values','text/css','text/html','text/javascript','text/plain','text/text','text/xml'
]
const server = awsServerlessExpress.createServer(app,null,binaryMimeTypes);
但是没有运气。
有人可以帮我这个忙吗?预先感谢。
解决方法
我通过重写Accept-Encoding标头解决了它:
app.all('*',(req,res,next) => {
createProxyMiddleware({ target: 'https://www.google.com/',changeOrigin: true,onProxyReq: (proxyReq,req,res) => {
proxyReq.setHeader('Accept-Encoding','identity');
}
})(req,next);
});
此解决方案未优化。由于此解决方案将发送未压缩的响应,因此将增加响应内容的长度。但是现在这解决了我的问题。如果找到其他解决方案,我将进行更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。