出于某种原因,我需要一个仅返回一些文本的views.py
。通常情况下,我会使用HttpResponse("text")
。但是,在这种情况下,我要求通过https
发送文本,以对抗不可避免的混合内容警告。
通过django(1.7.11)通过https发送纯文本的最简单方法是什么?
答案 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>
上述任何一项都可以通过以下方式实现:
升级到Django的secure and supported版本,其中使用SECURE_SSL_REDIRECT
和SecurityMiddleware
会将所有流量重定向到SSL
向您的主机提供商询问如何在其服务器中实施此功能
使用apache config个文件。
使用.htaccess
重定向single page。
除了snippet之外还有一些道路上的hackish解决方案,它可以与urls.py
中的装饰器一起用来强制https
,或者custom middleware将某些网址重定向到https。