Go:如何在不加载body的情况下创建http代理传递

n9vozmp4  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(63)

我在全世界有N个特工。我需要通过这些代理调用一些端点,但不加载它们的主体。例如,我想调用google.com,我将此URL发送给所有N个代理,他们将使用GET方法发送http请求到google.com,并将响应发送给我。问题是所有代理都在加载完整的响应,但我只需要响应状态和标题。在Golang中有什么解决方案可以首先阻止下载身体React吗?
我试着用一些curl标志调用它,但是它只是忽略显示响应体,并在后台下载体

gj3fmq9x

gj3fmq9x1#

您尝试实现的内容与HTTP协议不兼容。
撇开HEAD和GET不谈,让我们从一个独立于语言/实现的Angular 来看这个问题。
无论实现如何,您的HTTP客户端都使用GET/POST/PUT方法向服务器发送HTTP/1.1请求。接下来发生的事情是服务器接收到这个请求,具有以下有效负载(假设是GET,但对所有人来说都是一样的):

GET /somepath HTTP/1.1
Host: somedomain.com
<more request headers here>

字符串
此时,服务器将使用HTTP响应头和HTTP响应体进行回复。没有办法防止这种情况发生,因为它会破坏HTTP协议。您总是可以避免在客户端阅读响应体,但响应体将始终“通过网络”传输。
但是,对于POST/PUT(需要发送请求体的方法),您可以使用Expect头。
如果您在请求中包含Expect: 100-continue头,那么服务器将向您发送回HTTP 100 Continue响应,该响应向客户端发出可以发送请求正文的信号,此时您可以切断连接。
然而,这意味着如果您发送了请求正文,您将无法获得将发送的 * 实际 * HTTP响应代码。例如,如果您的有效负载无效,您将不会收到HTTP 400 Bad Request,因为您实际上没有发送有效负载。如果你发送了payload,那么服务器会发回一个完整的响应,* 包括 * 正文。
不幸的是,你想要达到的目标是不可能的。

相关问题