当通过 HTTPS 访问站点时,将 Djanto 的 STATIC_URL 切换到 HTTPS
Switching Djanto's STATIC_URL to HTTPS when site is accessed via HTTPS
我有一个按以下方式设置的 Django 项目:
- Apache 在
https://example.com
和 https://example.com
上通过 WSGI 为 Django 提供服务。
- Apache 还服务于
http://static.example.com
和 https://static.example.com
。
模板是针对静态文件设置的(例如):
{% load staticfiles %}
[...]
<script src="{% static 'site/js/main.js' %}"></script>
但是有一个问题。当通过 HTTPS 访问 Django 站点时,浏览器往往会抱怨安全问题,因为静态文件仍然通过 HTTP 提供。例如 Chrome:
所以问题是,有没有办法告诉 Django 在通过 HTTPS 访问站点时使用 https://static.example.com/
作为 STATIC_URL
?
由于您为资产使用单独的子域,因此您可以使用 protocol-relative URL,它始终使用与源页面相同的协议:
STATIC_URL = "//static.example.com"
我有一个按以下方式设置的 Django 项目:
- Apache 在
https://example.com
和https://example.com
上通过 WSGI 为 Django 提供服务。 - Apache 还服务于
http://static.example.com
和https://static.example.com
。
模板是针对静态文件设置的(例如):
{% load staticfiles %}
[...]
<script src="{% static 'site/js/main.js' %}"></script>
但是有一个问题。当通过 HTTPS 访问 Django 站点时,浏览器往往会抱怨安全问题,因为静态文件仍然通过 HTTP 提供。例如 Chrome:
所以问题是,有没有办法告诉 Django 在通过 HTTPS 访问站点时使用 https://static.example.com/
作为 STATIC_URL
?
由于您为资产使用单独的子域,因此您可以使用 protocol-relative URL,它始终使用与源页面相同的协议:
STATIC_URL = "//static.example.com"