You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过HTTP Header强制HTTPS连接使用HTTP/1.1版本?

能否通过Header强制HTTPS连接使用HTTP/1.1?

核心结论

不能通过HTTP Header强制使用HTTP/1.1。HTTP版本的协商发生在TLS握手阶段(通过ALPN扩展),远早于HTTP Header的发送。当客户端发起HTTPS连接时,会先和服务器协商要使用的应用层协议(HTTP/2、HTTP/1.1等),协商完成后才会发送HTTP请求头。

curl --http1.1参数的原理

curl的--http1.1参数并非通过修改Header实现,而是在TLS握手时跳过HTTP/2的ALPN协商,直接告知服务器只支持HTTP/1.1,从而强制使用该版本协议。这也是为什么加上这个参数能成功访问目标服务器的原因——避免了和中间服务器协商HTTP/2,后续转发到终端服务器时协议匹配。

替代curl的解决方案

以下是几种不依赖curl的实现方式:

1. wget

使用--no-http2参数禁用HTTP/2支持:

wget --no-http2 https://target-server.com

2. Python Requests库

自定义适配器强制使用HTTP/1.1:

import requests
from requests.adapters import HTTPAdapter
from urllib3.poolmanager import PoolManager

class HTTP11Adapter(HTTPAdapter):
    def init_poolmanager(self, *args, **kwargs):
        # 指定仅使用HTTP/1.1
        kwargs["http_version"] = "HTTP/1.1"
        self.poolmanager = PoolManager(*args, **kwargs)

# 创建会话并挂载适配器
session = requests.Session()
session.mount("https://", HTTP11Adapter())

# 发起请求
response = session.get("https://target-server.com")
print(f"响应状态码: {response.status_code}")

3. Node.js

通过https模块指定ALPN协议仅为HTTP/1.1:

const https = require('https');

const options = {
  hostname: 'target-server.com',
  port: 443,
  path: '/',
  method: 'GET',
  // 只协商HTTP/1.1
  ALPNProtocols: ['http/1.1']
};

const req = https.request(options, (res) => {
  console.log(`状态码: ${res.statusCode}`);
  res.on('data', (data) => {
    process.stdout.write(data);
  });
});

req.on('error', (err) => {
  console.error('请求错误:', err);
});
req.end();

4. OpenSSL手动连接

直接通过OpenSSL建立指定ALPN的TLS连接,再手动发送HTTP/1.1请求:

# 建立TLS连接,指定ALPN为http/1.1
openssl s_client -connect target-server.com:443 -alpn http/1.1

# 连接成功后,手动输入以下内容(回车两次结束):
GET / HTTP/1.1
Host: target-server.com
Connection: close

5. Postman

在Postman的设置中关闭HTTP/2支持:

  • 进入「Settings」>「General」
  • 找到「HTTP/2」选项,取消勾选「Enable HTTP/2」

内容的提问来源于stack exchange,提问作者myol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:40:23