Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有ssl_context的烧瓶服务器如果收到http请求就会冻结。

带有ssl_context的烧瓶服务器如果收到http请求就会冻结。
EN

Stack Overflow用户
提问于 2021-07-29 19:47:03
回答 2查看 502关注 0票数 8

我正在尝试创建一个简单的烧瓶服务器,它可以将任何http请求重定向到https。我已经创建了一个证书和密钥文件,并注册了一个before_request挂钩,以查看请求是否安全并适当地重定向,并遵循建议这就是答案

烧瓶服务器按预期响应https请求。但是,当我发送http请求时,before_request钩子永远不会被调用,服务器永远挂起。如果我从浏览器发送http请求,我会看到一个"ERR_EMPTY_RESPONSE“。之后,服务器甚至不响应https请求。也没有打印日志。

使用gunicorn运行这个应用程序也没有帮助。唯一的区别是古尼科恩能够发现工人被冻住了,并最终杀死并替换了它。我也尝试过使用flask-talisman,结果也是一样的。

下面是我正在运行的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### server.py
from flask import Flask, request, redirect


def verify_https():
    if not request.is_secure:
        url = request.url.replace("http://", "https://", 1)
        return redirect(url, 301)


def create_flask_app():
    app = Flask(__name__)
    app.before_request(verify_https)
    app.add_url_rule('/', 'root', lambda: "Hello World")
    return app


if __name__ == '__main__':
    app = create_flask_app()
    app.run(
        host="0.0.0.0",
        port=5000,
        ssl_context=('server.crt', 'server.key')
    )

使用python3.8 server.pygunicorn --keyfile 'server.key' --certfile 'server.crt' --bind '0.0.0.0:5000' 'server:create_flask_app()'运行它,并打开浏览器窗口到localhost:5000,会导致服务器挂起。

EN

回答 2

Stack Overflow用户

发布于 2022-10-17 12:37:28

说到结冰,这不是。烧瓶和金牛只能服务于一种不同的连接。。所以没有冻结,因为你的浏览器取消了请求并在闲置。

我认为如果您想要将HTTP更改为HTTPS,最好使用更快的web服务器,例如Nginx。我会推荐它给你的。

但是,如果同时运行多个gunicorn实例,则有可能触发verify_https函数。

我以您的例子为例,生成了一个证书,然后在我的控制台中运行这个脚本(它包含一个后台作业,可以在两个单独的ter中运行)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gunicorn --bind '0.0.0.0:80' 'server:create_flask_app()' & gunicorn --certfile server.crt --keyfile server.key --bind '0.0.0.0:443' 'server:create_flask_app()'

现在,chrome按预期的方式转到安全页面。

票数 2
EN

Stack Overflow用户

发布于 2022-10-14 11:28:58

通常,服务器不会同时侦听同一端口上的http和https。我对个人投资组合也有类似的要求,但我使用nginx将http请求(端口80)转发到https (端口443),然后https服务器将其传递给我的uwsgi后端,后者监听端口3031。这可能比你需要的要复杂得多,但是一个可能的解决方案。如果你走那条路,我会根据你的证书需求推荐让你加密。它将为您设置证书和nginx.conf。

如果您不想使用完整的nginx/apache路由,我认为最简单的解决方案就是在您所链接的线程上建议的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68585231

复制
相关文章
EFI 引导问题:EFI 引导配置错误,导致无法启动
是山河呀
2025/02/04
6800
Linux启动引导参数grub
内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明。大多数参数是通过"__setup(... , ...)"函数设置的,少部分是通过"early_param(... , ...)"函数设置的,逗号前的部分就是引导参数的名称,后面的部分就是处理这些参数的函数名。
mingjie
2022/05/12
9.6K0
如何在Linux上编辑内核引导参数
更改或编辑内核启动参数非常重要,当您想要修复在引导过程中导致错误,测试新功能,激活其他驱动程序或禁用系统上的功能的问题。 这些参数作为文本存储在引导加载程序的配置文件中,内核在“init”过程中解析。 要确定系统上次启动时使用的参数,应在终端上输入以下内容:
子润先生
2021/06/14
3.3K0
旁观者.个性引导页个性引导页
这款个人主页简约而不失优雅,背景图片为随机api,共有38张随机图片,每次刷新都会看到不一样的美图。
小化先森
2023/03/05
1.1K0
GRUB 引导加载程序问题:GRUB 配置错误或损坏
是山河呀
2025/02/04
1610
CentOS开机时出现GRUB引导错误怎么办
CentOS在开机的时候,突然出现了GRUB引导错误,导致系统进入不了,遇到这种情况很多人就束手无策了,其实这类的问题不难解决,请按照以下步骤进行操作即可。
拓荒者
2019/09/05
3.7K0
CentOS开机时出现GRUB引导错误怎么办
Spring Boot引导过程
引导Spring Boot应用程序的一种方法是使用Spring Initializer。为此需要访问Spring Initializer 网页 www.start.spring.io[1] 并选择 Build,Spring Boot版本和平台。此外还需要提供组,工件和所需的依赖项来运行应用程序。
黑洞代码
2021/07/14
9070
Spring Boot引导过程
使用OC引导ubuntu
按任意键进入输入模式,然后我们需要找到ubuntu的grub引导所在的分区. 直接输入 FS0: 回车,就能进入这个分区,然后再输入ls回车,查看里面的文件,看这个是不是存grub引导的地方.
GOOPHER
2022/03/31
3.3K0
使用OC引导ubuntu
window引导配置bcdedit
以前的系统上有boot.ini配置,现在没有了只能bcdedit修改系统配置,或者msconfig修改(可修改项有限)
sofu456
2020/07/26
9520
uefi shell 修复引导_磁盘主引导损坏怎么办
1、 红旗DC5.0 32bit莫名其妙死机,(服务器是ibm x3650 2008年左右的机器),硬重启后无法启动,极其缓慢,到最后报错:
全栈程序员站长
2022/09/24
2.4K0
SpringBoot之引导类[Application]
  我们不管是做Spring的程序也好,还是做springMvc的程序也好,最终都会运行出一个spring容器出来,而我们所有的对象全部都已Bean的形式交给Spring容器管理。
叫我阿杰好了
2022/11/07
6590
SpringBoot之引导类[Application]
ubuntu如何修复引导
****前言:**** 今晚快要下班的时候,cp文件夹到U盘里面,由于文件过大并且里面的文件都是代码小文件,想想接近700M大有多少小文件,然而电脑就发烧式的发烫,真不敢想象呢,前所未有的发热,于是我就想关机来让电脑来歇歇,万万没想到的就是,电脑关机出现异常了,这时候我已经意识到电脑maybe出了问题。然后我就立马开机,果然不出我所料,电脑系统进不了了。来公司前我安装了linux+win双系统,电脑开机默认进入的是win系统,看到提示,感觉是win除了问题,真是奇怪:上次使用win系统都没有问题的,让你w
AlicFeng
2018/06/08
9.5K0
【Linux】引导流程
在计算机科学领域,服务(Service)是指在计算机网络或分布式系统中执行的可独立访问的软件组件,它们提供特定的功能或任务。服务可以是网络服务,如Web服务器、数据库服务器,也可以是系统服务,如日志服务、时间同步服务。服务的目标是通过网络或系统调用为其他程序或用户提供某种功能,以促进系统的模块化和可扩展性。
人不走空
2024/02/21
1510
android覆盖式引导
我们在开发产品的时候,每次发版可能会有一些新的功能需要引导用户使用,以前大部分都是使用截图,然后让设计师把引导的问题修饰好放到图上,现在这张图片就是引导图片,我们只需要用这张图片放到界面上,这样基本上就可以满足引导的作用.
飞雪无情
2018/08/28
1K0
android覆盖式引导
如何引导访客注册
原文出处: gkogan 译文出处:TerryFan 许多初创公司的命运几乎完全取决于一个转换点:访问者何时转换成用户。 很多时候,这个关键的任务落在了再普通不过的“注册”按钮的肩上,而这个可怜的按钮在产品开发中却往往得不到任何考虑和关注。 如果你花一点时间来考虑注册按钮的措辞,也许就能大幅增加注册用户转化率。(当然在访客成为用户之后的事情至关重要,但一旦你有了用户的邮件地址,事情都会变得容易得多。) 各初创公司的注册按钮 为什么“注册”按钮起不了作用 它们被忽略了。当访客重复看到许多网站都共有的元
wangxl
2018/03/08
1.2K0
如何引导访客注册
OpenCore引导黑苹果
OpenCore(OC)是一种新的引导方式,随着越来越多的kexts开始放弃Clover, 我相信提早使用OC会对你未来使用黑苹果会有很大的帮助。这是一个自然的现象,就像变色龙被Clover淘汰,而现在OC代替Clover也是大势所趋。你应该需要看一些相关的文章,来帮助你理解我的正文内容,同时也需要下载我推荐的软件:
用户6808043
2022/02/25
2K0
anndroid 模糊引导界面
先上两张图,后面补上代码 我们以前的写法是在需要显示模糊引导的地方,写一个布局,然后第一次使用的时候显示出来。但是这样做代码结构不清晰,所以我们有必要将这些View独立出来,写成一个自定义的View
xiangzhihong
2018/02/01
7340
anndroid 模糊引导界面
揭秘vista引导机制
所谓的引导机制就是在操作系统内核运行前的一小段程序。其主要作用是初始化电脑硬件设备,建立内存空间的映射图。从而将系统的软件和硬件设备环境调配到一个适合的状态,以使电脑最终调用系统内核而准备好适合的环境。
全栈程序员站长
2022/11/18
5830
Netty中的引导类Bootstrap
Bootstrap是用来组织Netty的各个结构(pipeline,handler,eventloop),并使他们运行起来的类结构。分成两块,一个是客户端引导类Bootstrap,只用1个channel来处理所有的网络交互,另一个是服务端的ServerBootstrap,它提供一个父channel来接受客户端的请求,然后父channel创建多个子channel来用于的通信
爬蜥
2019/07/09
9560
利用threshold实现的遮罩引导
点击“开始引导”,则进入引导操作。除指定的按钮可以操作外,其它区域均不可点击。这种应用当新功能或是新产品上线后,用来引导用户来使用产品/功能,是十分有用的。facebook也有类似的引导,方法也很简单:用4个绝对定位的DIV(指定一个背景 + 一定透明度)遮住其它部分,这样可以被操作的区域就“留空”出来。
meteoric
2018/11/16
6160

相似问题

拦截对DOM函数的调用

13

jQuery:拦截原始DOM就绪事件?

26

拦截DOM和JS引擎调用

10

检测/拦截向DOM中插入<img>

43

如何在DOM中拦截导航事件?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文