你的flask服务开启https了吗?

一、你的flask服务开启https了吗?

1.事件起因

计划做文心一言插件,我购买了服务器,开始按照我的想象部署插件,结果工作不错,但是最后一步图片显示不正常。哭晕了,如下图所示。

仔细阅读,发现返回图片地址什么的都很正常啊,也可以访问得到,但是为什么就不能看到呢,很奇怪。

经多方排查,最终确定是图片跨域导致无法显示。

2.解决思路

知道是跨域问题就好了,因为文心一言是https访问,所以提供服务的也需要https,那么就开始作了(解决)。

二、解决办法

1.无效1.0解决办法

知道要https那我就加https了,直接百度解决办法。

  • Flask(更具体地说其实是Werkzeug ),支持使用即时证书,这对于通过HTTPS快速提供应用程序非常有用,而且不会搞乱系统的证书。你只有需要做的就是将 ssl_context ='adhoc' 添加到程序的 app.run() 调用中。遗憾的是,Flask CLI无法使用此选项。举个例子,下面是官方文档中的"Hello,World" Flask应用程序,并添加了TLS加密:
  • 安装库 pip install pyopenssl
python 复制代码
from flask import Flask
app = Flask(__name__)
 
@app.route("/")
def hello():
    return "Hello World!"
 
if __name__ == "__main__":
    app.run(ssl_context='adhoc')

这样启动起来就是https了,但是访问问题依旧,图片仍然没有显示。。。。。。仔细看来浏览器说是假的ssl,那就继续解决。

2.无效2.0自签名证书解决办法

所谓的自签名证书是使用与同一证书关联的私钥生成签名的证书,就是自己动手丰衣足食。

  • 生成证书
  • flask加载证书
bash 复制代码
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
python 复制代码
from flask import Flask
app = Flask(__name__)
 
@app.route("/")
def hello():
    return "Hello World!"
 
if __name__ == "__main__":
    app.run(ssl_context=('cert.pem', 'key.pem'))
复制代码

然后看结果,依然无效,因为是自签名。。。。。。

3.0终极解决办法

后来发现要真正的证书,那么你必须要有域名,才会发给你,就是说证书和域名是绑定的,就跟户籍一样,户籍都没有说什么学区房,没人理你。

  • 为此我花了8块买了一个cn一年的域名,并且进行了实名。
  • 在腾讯云申请ssl证书,参考地址 cloud.tencent.com/document/pr...
  • 申请地址 console.cloud.tencent.com/ssl 申请时必须先证明该证书属于你,需要按提示加入cname,进行验证。申请完毕略等一会就会通过,下载证书即可,具体包含以下几个问题件:
  • 加载证书 因为有4个文件,没有详细写,因此我测试了几次,最终成功。
python 复制代码
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', ssl_context=( 'erniebotplugins.cn_bundle.crt','erniebotplugins.cn.key'), port=8081)

三、最终效果

用上最终大招后,最终成功,具体效果如下。

可见现在ssl非常普遍,不安全别的网站都懒得搭理你。

相关推荐
烂蜻蜓8 小时前
Flask入门教程(八):视图函数详解——请求处理与响应的核心
后端·python·flask
烂蜻蜓13 小时前
Flask入门教程(九):模板渲染——用Jinja2构建动态页面
后端·python·flask
烂蜻蜓14 小时前
Flask入门教程(十):静态文件——CSS、JS与图片的正确管理方式
javascript·css·flask
千里码aicood17 小时前
flask基于数字人的储粮知识问答原型系统研究与实现
后端·python·flask
青 春 记 忆1 天前
零基础入门python30:Flask个人账本从空目录运行与阶段验收
python·flask·后端开发
典典分享指南1 天前
飞书 + 企业微信 + 微信文档多端协同实践指南
汇编·flask·intellij-idea·fastapi
叫我:松哥2 天前
基于Flask的教师评教管理系统,支持学生和教师两种角色登录
数据库·后端·python·数据挖掘·flask
编码者卢布2 天前
【Azure Developer】通过 API 获取 Azure VM 信息实践指南 Part 2(Azure China)
python·flask·azure
烂蜻蜓2 天前
Flask入门教程(七):请求与响应——Web应用的核心数据流
前端·python·flask
青 春 记 忆2 天前
零基础入门python29:用 pytest 验收完整 Flask 业务流程
python·flask·后端开发