3

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

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

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

然而,这并没有达到我的预期。页面仍在渲染中。任何想法,将不胜感激。

提前致谢。

4

2 回答 2

7

内部视图:

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)

我研究了使用sendand的方法get_response,但找不到太多。

于 2013-06-05T06:36:19.177 回答
0

一些不请自来的建议 - 不要从非 SSL 重定向到 SSL。

有一个安全问题。基本上,如果有人设法对您的非 SSL 服务进行中间人处理,他们可以将其重定向到在不同服务器上使用有效证书运行的 SSL 服务——用户可能不会注意到这一点。

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

于 2013-06-05T06:36:07.073 回答