React请求Flask接口遇SSL wrong version number错误求助
Flask后端SSL版本号错误解决办法
我正在构建一个React前端展示页面、Python Flask后端提供数据的简单应用。原本数据请求正常,但近期调用接口时持续出现SSL版本号错误:ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:2559)。
后端代码
from flask import Flask, jsonify from flask_cors import CORS from readEmail import readEmail, testEmails, plainEmails app = Flask(__name__) CORS(app) @app.route('/plain/data', methods = ["GET"]) def getPlain(): emails = plainEmails() return jsonify(emails)
前端请求函数
const getData2 = () => { fetch("http://127.0.0.1:5000/plain/data") .then(response => response.json()) .then(data => { setEmailData(data) }).catch(error => { console.log("error fetching", error) setTimeout(getData2, 500) }) }
解决办法
- 检查Flask启动方式:确认后端是用普通HTTP启动的
app.run(),而非带SSL参数的版本(比如app.run(ssl_context='adhoc'))。如果后端开启了HTTPS,前端用HTTP请求就会触发版本不匹配错误。 - 排查端口冲突:换个端口启动Flask(比如
app.run(port=5001)),同时修改前端请求地址对应端口,测试是否还报错,避免请求被转发到其他HTTPS服务。 - 定位后端内部请求:错误大概率来自
plainEmails()函数内部的HTTPS请求(而非前端请求Flask)。在该函数中添加调试日志,找到触发错误的外部接口调用。如果是外部接口SSL版本兼容问题,可指定SSL版本调用,示例代码如下:import requests from requests.adapters import HTTPAdapter from urllib3.poolmanager import PoolManager import ssl class SSLAdapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block=False): self.poolmanager = PoolManager( num_pools=connections, maxsize=maxsize, block=block, ssl_version=ssl.PROTOCOL_TLSv1_2 ) session = requests.Session() session.mount('https://', SSLAdapter()) # 用session调用目标外部接口 response = session.get('目标外部接口地址') - 更新依赖与环境:安装
pyopenssl(执行pip install pyopenssl),或升级Python到稳定新版本,确保系统openssl库为最新状态。
内容的提问来源于stack exchange,提问作者duckpro
相关产品推荐
相关产品推荐

