首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WSGIServer不使用https和python3

WSGIServer不使用https和python3
EN

Stack Overflow用户
提问于 2021-11-29 19:17:34
回答 1查看 142关注 0票数 0

我们用python2编写了一个旧的包,并将其升级到python3。这是一个网络应用程序,我们正在使用WSGIServer。

代码语言:javascript
复制
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler

server = pywsgi.WSGIServer(('', port), apphandler, handler_class=WebSocketHandler)

def apphandler(request, start_response):
    log.info("ATTENTION: request is {}".format(request))
    # do something

但是,当我尝试在https://website中使用这个web应用程序时,它会显示出以下错误:

代码语言:javascript
复制
This site can’t provide a secure connection
website.com sent an invalid response.
ERR_SSL_PROTOCOL_ERROR

在我的服务器日志中,我可以看到如下内容:

代码语言:javascript
复制
Invalid HTTP method: '\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x03Èæ\x01\x92É\x16ÁW»P½\x1aBÐa\x83ÆÊa]ãíDp¥¥¥\x12Ç\x82|\x1f E5\x03aAv\x99¢Nª\x93ÅÏ:Ð\x9d÷3£\x80çÍïÌÑÿC\rÏUÄ\x8b\x00 ªª\x13\x01\x13\x02\x13\x03À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\x93ZZ\x00\x00\x00\x00\x005\x003\x00\x000website.com\x00\x17\x00\x00ÿ\x01\x00\x01\x00\x00\n'

当我实际使用这个网站作为http://website.com时,它就能工作了。在python2中,服务器将正确地响应https。

我猜这可能是编码问题,但它甚至达不到我将日志放入apphandler函数的位置。有人知道我怎么能解决这个问题吗?是否需要更改服务器或python3编码设置?

EN

回答 1

Stack Overflow用户

发布于 2022-01-17 19:49:12

看起来,您正在启动一个位于端口443上的普通TCP web服务器,然后使用https: url从web浏览器中访问它。

如果您查看了这些文档:

https://www.gevent.org/api/gevent.pywsgi.html#gevent.pywsgi.WSGIServer

您需要提供ssl_args,以便使套接字在SSL下运行,而不是在TCP下运行。仅仅提供443个端口号是不够的。

您可以在这里找到一些如何设置ssl_args的示例:

https://www.programcreek.com/python/example/78007/gevent.pywsgi.WSGIServer

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

https://stackoverflow.com/questions/70160190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档