javascript - Node.js 快速发送原始 HTTP 响应
问题描述
我有一个遗留系统,可以将原始\纯 HTTP 响应作为字符串返回(包含所有必需标头 + 正文的文本)。
出于性能原因,我想直接发送此文本而不进行任何解析修改。
所以目标是代理收到的原始 HTTP 响应。
const express = require('express');
const app = express();
const router = app.Router();
router.get('request',()=>{
const plainTextWithHeadersFromExternalSystem = `HTTP/1.1 200 OK
Date: Sun, 10 Oct 2010 23:26:07 GMT
Server: Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8
OpenSSL/0.9.8g
Last-Modified: Sun, 26 Sep 2010 22:04:35 GMT
ETag: "45b6-834-49130cc1182c0"
Accept-Ranges: bytes
Content-Length: 12
Connection: close
Content-Type: text/html
Hello world!`;
... TODO: send text with headers and body as a response.
});
它可以是任何内容类型,而不仅仅是纯文本。
任何想法是否可以简单地使用 Node.js express lib 代理它?
解决方案
我自己也遇到了同样的问题,不得不深入研究 Node 的核心http
和net
模块来解决这个问题。
要跳过默认的 HTTP 响应行(例如 HTTP/1.1 200 OK
)和 Express/Node.js 发送的所有标头,您可以直接通过响应的套接字发送文本。
const responseMessage = `HTTP/1.1 200 OK
Date: Sun, 10 Oct 2010 23:26:07 GMT
Content-Type: text/html
Content-Length: 13
Hello, World!
`
router.get('/request', (req, res) => {
res.socket.end(responseMessage)
})
推荐阅读
- asp.net - 如何在 Blazor 应用程序的 docker 命令中更新连接链 (appsetting.json)?
- c# - 如何检查objectlistview c#中的所有项目?
- angular - Typescript 接口 - 字段类型:MyInterface | 字符串,尝试访问属性时不起作用
- java - 如何将数组作为参数传递给函数,以及与存储在数组中的对象具有相同数据类型的对象?
- domain-driven-design - 导致子实体更改的聚合根上的操作是否应该引发子域事件?
- laravel - Carousel 不起作用 bootstrap 5. 有人可以帮助我吗?
- python - 如何在一个单词被翻译后让我的 Python 莫尔斯电码解码器分开?
- python - 我在尝试安装最新版本的 sktime 时遇到错误
- rabbitmq - MassTransit rabbitMq - 为什么我的所有消息都被跳过
- security - 针对 CSRF 的 SameSite 标志