HTTPS相当于Django的HttpResponse

时间:2017-12-05 18:08:42

标签: django

出于某种原因,我需要一个仅返回一些文本的views.py。通常情况下,我会使用HttpResponse("text")。但是,在这种情况下,我要求通过https发送文本,以对抗不可避免的混合内容警告。

通过django(1.7.11)通过https发送纯文本的最简单方法是什么?

2 个答案:

答案 0 :(得分:0)

我也遇到了混合内容问题。根据我的经验,您根本无法使用HttpResponse对象而不会遇到麻烦。我从来没有完全确定过,并最终找到了“围绕”它的方式。

我的解决方案是使用JsonResponse对象来返回JSON字符串,这种方法可以返回类似于以下内容的视图:

mytext = 'stuff blablabla'
return JsonResponse({'response_text': mytext})

哪个非常容易解析,而且可以使用HTTPS。 也许不是你想要的,但我希望它可以帮助你找到自己的方式。

答案 1 :(得分:0)

Django在httprequest.build_absolute_uri的相关文档中写道:

  

因此,不鼓励在同一站点上混用HTTP和HTTPS   build_absolute_uri()将始终使用。生成绝对URI   当前请求具有相同的方案。如果您需要将用户重定向到   HTTPS,最好让您的Web服务器将所有HTTP流量重定向到   HTTPS。

文档明确指出

  

通信方法完全由服务器负责

丹尼尔罗斯曼评论道。

我最喜欢的选择是整个网站force https,但只能在特定网页上进行。{/ p>

上述任何一项都可以通过以下方式实现:

除了snippet之外还有一些道路上的hackish解决方案,它可以与urls.py中的装饰器一起用来强制https,或者custom middleware将某些网址重定向到https。