ClickHouse连接报错400:普通HTTP请求发送至HTTPS端口咨询
解决ClickHouse连接时的"HTTP请求发送到HTTPS端口"错误
错误原因
错误提示400 The plain HTTP request was sent to HTTPS port明确说明:当前clickhouse.prod.do.database:8123端口已被配置为HTTPS协议端口,但你的代码默认使用HTTP协议发起连接,导致协议不兼容。之前代码能正常运行,大概率是服务端后续修改了端口的协议配置,或者新笔记本的网络环境强制将HTTP请求重定向到HTTPS端口。
解决方案
1. 启用HTTPS协议连接
修改clickhouse_connect.get_client()的参数,添加secure=True启用HTTPS协议,这是最直接的修复方式:
import numpy as np import pandas as pd import datetime as dt import gspread import clickhouse_connect from oauth2client.service_account import ServiceAccountCredentials client = clickhouse_connect.get_client( host='clickhouse.prod.do.database', port=8123, username='default', password='1234567', secure=True) # 启用HTTPS协议
2. 额外排查场景(若上述修改无效)
- 确认HTTPS端口:部分ClickHouse部署会将HTTPS服务放在
8443端口,若8123实际仍为HTTP但被nginx强制跳转,可尝试更换端口为8443并保留secure=True。 - 处理自签名证书:如果服务端使用自签名SSL证书,新笔记本的信任链中没有该证书,会导致连接失败。可临时添加
verify=False跳过证书验证(生产环境不推荐,建议导入信任证书):client = clickhouse_connect.get_client( host='clickhouse.prod.do.database', port=8123, username='default', password='1234567', secure=True, verify=False) - 检查网络代理:新笔记本若配置了全局代理,可能导致请求被强制转换为HTTPS,可尝试关闭代理后重新连接。
内容的提问来源于stack exchange,提问作者EugeneSam
相关产品推荐
相关产品推荐

