繁体   English   中英

在金字塔中,如何从http重定向到https?

[英]In Pyramid how can I redirect from http to https?

如果您无法访问网络服务器,并且唯一的方法是拦截请求,然后从http重定向到https,重定向的最佳方法是什么?

我尝试使用NewRequest查看订阅者。 我做了类似的事情:

 @subscriber(NewRequest) def modify_protocol(event): if re.search('some string', event.request.host_url): event.request.scheme = 'https' 

但是,这没有达到我的预期。 页面仍在呈现中。 任何想法,将不胜感激。

提前致谢。

在视图内:

if req.scheme == "http":
        return HTTPFound("https://" + req.host + req.path_qs)

使用事件监听器:

@subscriber(NewRequest)
def redirect(event):
    if event.request.scheme == "http":
        raise HTTPFound("https://" + event.request.host + event.request.path_qs)

我研究了使用sendget_response ,但找不到多少。

一些未经请求的建议 - 不要从非SSL重定向到SSL。

存在安全问题。 基本上,如果有人设法使用非SSL服务中的Man-In-The-Middle,他们可以将其重定向到在不同服务器上运行有效证书的SSL服务 - 用户可能不会注意到这一点。

最好提供一个警告用户的页面,并提供一个纯文本链接供他们点击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM