基于Python的Azure ChatBot无法处理HTTPS请求的解决问询
问题描述
该聊天机器人运行正常,可接收HTTP请求,但无法处理HTTPS请求



当前使用微软BotBuilder Python多轮提示示例代码,Azure ChatBot仅支持HTTPS URL,需修改代码实现HTTPS支持。
解决方案
要让Python BotBuilder示例支持HTTPS,可通过以下两种方式实现:
方式一:自带HTTPS服务器(测试场景)
- 生成自签名SSL证书(用于测试):
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365 - 修改示例启动代码(以Flask为例):
找到原代码中app.run()的部分,替换为以下代码:import ssl context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.load_cert_chain('cert.pem', 'key.pem') app.run(host='0.0.0.0', port=3978, ssl_context=context)
方式二:反向代理(生产场景)
生产环境推荐用Nginx做反向代理,将HTTPS请求转发到本地HTTP Bot服务:
- 准备受信任的SSL证书(可通过Let's Encrypt获取免费证书)
- 添加Nginx配置片段:
server { listen 443 ssl; server_name 你的域名; ssl_certificate /证书路径/cert.pem; ssl_certificate_key /证书路径/key.pem; location /api/messages { proxy_pass http://localhost:3978/api/messages; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } - 重启Nginx服务,Azure ChatBot即可配置该HTTPS域名作为终结点。
注意事项
- 自签名证书仅适用于测试,生产环境必须使用CA颁发的可信证书
- 测试时可借助ngrok将本地HTTPS服务暴露到公网:
ngrok https 3978
内容的提问来源于stack exchange,提问作者Quinn Favo
相关产品推荐
相关产品推荐

