2010-12-05 3 views
8

Я хочу проверить, работает ли мой сайт под HTTPS из моего шаблона, чтобы я мог условно добавить S в HTTP-файлы моих внешних javascript-библиотек (а именно jQuery). Как я могу это сделать?Django: Убедитесь, что соединение защищено от шаблона?

+0

Это также может быть обработано промежуточным программным обеспечением: [http://stackoverflow.com/questions/7566112/how-to-implement-httpsssl-middleware-in-django/37599845#37599845](http://stackoverflow.com/questions/7566112/how-to-implementation-httpsssl-middleware-in-django/37599845 # 37599845) – 2016-06-02 18:45:50

+1

@LakeDupin Это промежуточное программное обеспечение предназначено для пересылки на HTTPS, что немного больше, чем я просил, но внутри лежит секретный соус : `request.is_secure()`. Однако это [уже опубликовано] (http://stackoverflow.com/a/4360699/65387). – mpen 2016-06-02 19:58:07

+0

LakeDupin lol =) Прохладный Я счастлив, что у вас есть ответ, который работает !!! Просто хотел предложить решение промежуточного программного обеспечения, если это было более подходящим для кого-то еще в будущем. Счастливое кодирование. – 2016-06-03 18:08:35

ответ

7

Я не уверен, если Google сделал это в то время, я задал этот вопрос, но теперь они рекомендуют добавлять в библиотеку через

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 

// будет использовать любую схему, вы в настоящее время используется - никакого дополнительного кода или условных обозначений не требуется.

5

Проверьте этот запрос в поле зрения с is_secure() и отправьте его в шаблон.

14

Если ваши ресурсы размещены на той же машине, как вы служите запросы от, он может не нужно указать схему URL-адрес на всех:

<script src="/static/js/myfile.js" type="text/javascript"></script> 

Это будет использовать тот же протокол (HTTP или HTTPS) и сервер как запрос на исходную страницу.

Edit 2 (2016):

Если вы подключаетесь к ресурсу на другом сервере, лучшим решением в настоящее время (как pointed out by mpen below) является использование относительной схемы URL:

<script src="//media.example.com/static/js/myfile.js" type="text/javascript"></script> 

Это будет автоматически подключаться к серверу с помощью http или https в зависимости от подключения к текущей странице.

Обратите внимание, что это может вызвать some problems, если вам необходимо поддерживать старые браузеры.

Редактировать: Альтернативно, если вам действительно нужна информация в вашем шаблоне по какой-либо причине, вы можете add the request context processor и использовать RequestContext в ваших взглядах. Это помещает переменную request в контекст вашего шаблона, что дает вам доступ к объекту HttpRequest. Затем вы можете проверить, если запрос является безопасным путем проверки значения request.is_secure

Например:

<script src="http{% if request.is_secure %}s{% endif %}://media.example.com/static/js/myfile.js" type="text/javascript"></script> 
1

Пожалуйста, обратите внимание, используя {% static %} тег шаблона (в Django> = 1,4), который может быть сконфигурирован для размещения средств массовой информации файлы на отдельном домене или сервере. Это избавит вас от проблемы is_secure.

https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:templatetag-staticfiles-static

Смежные вопросы