我设法使用 mkcert 创建自签名证书并将其签名为 CA,以便我的电脑将此证书视为受信任。Mkcert 创建了两个文件 'localhost.pem' 和 'localhost-key.pem' 我引用了它们当运行烧瓶应用程序时。当我使用
flask --app=server run --cert=localhost.pem --key=localhost-key.pem --debug
启动 Flask 应用程序时,它显示服务器正在作为 https 运行(如下图)。
我可以使用浏览器访问这个网站,它实际上是 https。 我想使用 requests 模块通过 python 脚本访问服务器并且它有效,但有一件事让我感兴趣。事实上,控制台将日志显示为 正如你所看到的,这里是 HTTP/1.1 而不是 HTTPS。
如果我尝试在烧瓶中打印
request.is_secure
,它会返回True,当我打印request.scheme
时,它会返回https,所以看起来它是安全的,但我不确定,因为烧瓶日志为HTTP/1.1
import requests
data={'username':'pamix'}
r = requests.post(url='https://localhost:5000/test',data=data)
from flask import Flask,render_template,request
app = Flask(__name__)
@app.route("/test",methods=['POST'])
def test():
print(f"is_secure:{request.is_secure}")
print(f"scheme:{request.scheme}")
return 'test'
if __name__=='__main__':
app.run()
如您所见,有 HTTP/1.1 而不是 HTTPS
HTTPS是HTTP协议里面的TLS认证+加密。协议版本仍然是HTTP/1.1,即没有HTTPS/1.1。