何时在 golang 中使用劫持?

2024-02-23

我不明白为什么我们使用劫持,因为我可以直接在响应正文中写入一些内容,有人可以解释一下吗?

func writeSome(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "write some thing")
}

与此相同:

func hijack(w http.ResponseWriter, r *http.Request) {
    hj, _ := w.(http.Hijacker)
    _, buf, _ := hj.Hijack()
    buf.WriteString("write some thing")
    buf.Flush()
}

我很困惑


当您不想使用内置服务器的 HTTP 协议实现时,请使用 Hijack。这可能是因为您想要切换协议(例如,切换到 WebSocket)或者内置服务器妨碍您。

上面的两个代码片段不会在线上创建相同的输出。第一个片段的输出将包含响应标头:

HTTP/1.1 200 OK
Date: Wed, 26 Nov 2014 03:37:57 GMT
Content-Length: 16
Content-Type: text/plain; charset=utf-8

write some thing

第二个片段绕过内置服务器代码并写入

write some thing

直接输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在 golang 中使用劫持? 的相关文章

随机推荐

  • 多索引数据框 pandas 中的操作

    我需要处理大数据 csv 中的地理和统计数据 它包含来自地理行政和地统计的数据 城市 区位 地统计基本区划和区块构成层次指标 我必须为地理索引中数据的最大值的每个元素创建一个新列 data2 并将每个块值除以该值 对于每个索引级别 索引级别
  • 如何在不使用库(Metrics)的情况下制作MAE和RAE的函数?

    我的目标是创建平均绝对误差 MAE 和相对绝对误差 RAE 的函数 而不使用任何类型的库 例如库 Metrics 我尝试在 MAE 和 RAE 的函数内输入公式 mae lt function a b mean abs a b rae lt
  • Android WebView HTTP Cookie 在 API 21 中不起作用

    我有一个使用 WebView 和 HTTP cookie 的 Android 应用程序 此应用程序适用于运行 API 19 或更低版本的 Android 设备 API 21 不会保存 http cookie 以供以后参考 Android W
  • ffmpeg 连接并保留元数据流

    我正在尝试连接 GoPro Hero6 分割电影的多个文件以避免 FAT 4GB 限制 ffmpeg 非常适合此目的 但我需要在元数据流中编码的遥测数据 而 ffmpeg 默认情况下似乎不保留此数据 使用ffprobe命令你可以看到源视频有
  • 如何在 MDriven 中设置日期和时间选择器?

    我试图在 MDriven 中捕获日期和时间 但数据类型 DateTime 的默认值仅显示日期选择器 在 Web 中 但时间存储在持久层中 我又如何捕捉时间 我在wiki mdriven net https wiki mdriven net
  • 在xml中定义没有class属性的bean

    我是 Spring 世界的新手 在一次采访中 有人问我们是否可以在 XML 中创建一个 bean 而不指定class 也就是说 bean 只会有一个id属性 我对此没有答案 请告知我们是否可以在 Spring 中以 XML 形式创建一个 b
  • Android NDK - 在配置更改时强制库重建

    在 Eclipse 中更改构建配置时 有没有办法强制 Android NDK 重建特定库 我正在使用 Android NDK 构建一个 Android 项目来构建 C 库 我正在使用带有 Sequoyah 插件的 Eclipse 一切都已设
  • 是否有现有的 gem 或脚本可以将数字转换为 comp-3/压缩十进制格式?

    继续我将 COBOL 转换为 Ruby 程序的冒险 我必须将十进制数字转换为 comp 3 压缩十进制格式 有人知道一个简单的 Ruby 脚本或 gem 可以做到这一点吗 伯恩斯 Ruby 知道如何打包半字节 因此结果非常简单 def pa
  • fparsec 解析字符串序列

    我有一个用户输入文本 例如 abc def ghi 我想解析它以获取字符串列表 abc def I tried let str Parser lt gt many1Chars noneOf let listParser Parser lt
  • 如何识别访客用户的时间比会话通常存在的时间长

    我知道 我可以使用 Session getId 但它会随着时间的推移而改变 也许我不明白这些会议 据我所知 它在 php 运行时启动 并在 php 代码完成时删除 另一方面 我读到会话 ID 存储在 cookie 中 当用户再次打开您的网站
  • 使用类实例作为 Typescript 映射中的键

    当获取和设置映射值时 映射必须以某种方式知道键是否等于另一个已设置的键 如何在 Typescript 中实现复杂数据类型 自定义类 的相等性 在Java中我会重写equals方法 打字稿中有等价的方法吗 就我而言 我有以下课程 export
  • cplex boolVarArray 给出双精度值

    我一直在尝试使用 CPLEX Java 实现 ILP 并且长期以来一直被一个问题困扰 以下是 ILP 的几个变量 IloIntVar above new IloIntVar numRect IloIntVar below new IloIn
  • 酿造安装 nvm。 nvm:找不到命令

    使用brew安装nvm并运行后nvm 它说nvm command not found 我怎样才能得到要执行的命令 使用brew 安装nvm 有两个步骤 首先使用brew安装应用程序 brew install nvm 然后查看brew 信息的
  • 我可以使用ASP.Net Core 3.0中的IEmailSender接口向多个接收者发送电子邮件吗

    我是 ASP Net core 的初学者 实际上我正在使用 ASP Net Core 3 0 我想向多个收件人发送电子邮件 我可以使用IEmailSender接口吗 或者有什么建议吗 我的 IEmailSender 实现是这样的 publi
  • 根据太阳位置(方位角和仰角)以及纬度和经度计算日期和时间

    与此相关非常有帮助question https stackoverflow com questions 8708048 position of the sun given time of day latitude and longitude
  • 应包含哪个 aSmack jar 文件(android-14、android-15...)以支持 SDK 版本 14-19?

    我陷入了两个不同的错误之间 无法实例化活动 ComponentInfo https stackoverflow com questions 16610296 android unable to instantiate activity cl
  • 为什么rvm需要登录shell?

    据我所知 rvm是一组bash脚本 为什么需要登录 shell 哪些仅存在于登录 shell 中的属性对于 rvm 是必需的 相关帖子 rvm 安装无法正常工作 RVM 不是一项功能 https stackoverflow com ques
  • Kafka 生产者超时异常

    我正在运行 Samza 流作业 将数据写入 Kafka 主题 Kafka 正在运行一个 3 节点集群 Samza 作业部署在纱线上 我们在容器日志中看到很多这样的异常 INFO 2018 10 16 11 14 19 410 U 2 151
  • 为什么这个类对象声明有效?

    假设我有一堂课 class Test public int x Test const Test obj x obj x 为什么 Test object name Test random name 运行并且不需要另一个对象作为参数 就像是Te
  • 何时在 golang 中使用劫持?

    我不明白为什么我们使用劫持 因为我可以直接在响应正文中写入一些内容 有人可以解释一下吗 func writeSome w http ResponseWriter r http Request fmt Fprintf w write some