即使客户端不发送,服务器也会收到接受编码标头

问题描述 投票:0回答:1

我正在向回显服务器( echo.free.beeceptor.com )发送一个curl请求,即使我没有在请求中包含accept-encoding标头,回显服务器显示它收到了标头。

% curl -v https://echo.free.beeceptor.com                       
*   Trying 147.182.252.2:443...
* Connected to echo.free.beeceptor.com (147.182.252.2) port 443
* ALPN: curl offers h2,http/1.1
....
< HTTP/2 200 
< access-control-allow-origin: *
< alt-svc: h3=":443"; ma=2592000
< content-type: application/json
< date: Tue, 02 Jul 2024 06:27:02 GMT
< server: Caddy
< vary: Accept-Encoding
< 
{
  "method": "GET",
  "protocol": "https",
  "host": "echo.free.beeceptor.com",
  "path": "/",
  "ip": "115.110.154.68:62921",
  "headers": {
    "Host": "echo.free.beeceptor.com",
    "User-Agent": "curl/8.4.0",
    "Accept": "*/*",
    **"Accept-Encoding": "gzip"**
  },
  "parsedQueryParams": {}

curl 是否在内部添加此标头?我认为邮差上没有看到同样的行为。什么逻辑可以解释这个?

尝试在https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding中查找Accept-encoding,但它也没有对这种行为产生任何启发。

http curl https encoding postman
1个回答
0
投票

您只是使用了有缺陷的在线服务,显示了错误的数据。

自己证明一下:

  1. 启动 Wireshark 并在主网络适配器上监听
    tcp port 80
  2. 执行
    curl -v http://echo.free.beeceptor.com
  3. 检查curl输出和Wireshark中传输的数据都会向您显示请求
GET / HTTP/1.1
Host: echo.free.beeceptor.com
User-Agent: curl/8.7.1
Accept: */*
© www.soinside.com 2019 - 2024. All rights reserved.