如果JavaScript和cookies被禁用,阻止访问Django站点的好方法
Good way to prevent access to Django site if JavaScript and cookies disabled?
我正在使用响应式网页设计和RESS构建一个Django网站。如果用户在浏览器中禁用了JavaScript和/或cookie,我想阻止他们访问站点。下面显示的代码是实现这一点的好方法吗?我有什么办法可以改进代码吗?最后,性能会受到影响吗?我认为服务器将不必要地将代码下载到禁用JS的浏览器中。然而,我认为,在用户访问了网站一次之后,他们就会知道他们需要启用JS才能使用它。
我想我更关心的是是否会有任何明显的延迟,因为这个检查将在每次用户访问网站上的任何页面时运行。由于该网站将在移动设备上使用,因此速度是首要考虑的问题。
谢谢。
# static/styles.css:
<style type="text/css">
#page-content, #cookie-warning {
display: none;
}
</style>
# templates/base.html
<!DOCTYPE html>
<html>
<head>
<title>RWD/RESS Website</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="/static/styles.css"/>
</head>
<body>
<noscript>WARNING: You must enable JavaScript in your browser in order to use this website.</noscript>
<div id="cookie-warning">
WARNING: You must enable cookies to use this site.
</div>
<div id="page-content">
{% block body_wrapper %} {% endblock %}
</div>
<script type="text/javascript">
// Functions to test capabilities
var javascript_enabled = function () {
// var elem = document.getElementById("page-content");
return true;
};
var cookies_enabled = function() {
var cookieEnabled = (navigator.cookieEnabled) ? true : false;
if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
document.cookie = "test_cookie";
cookieEnabled = (document.cookie.indexOf("test_cookie") != -1) ? true : false;
}
return cookieEnabled;
};
// Function to allow multiple onload event listeners
function addLoadEvent(func) {
var oldOnLoad = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldOnLoad) {
oldOnLoad();
}
func();
}
}
}
// Add onload events for capability functions.
addLoadEvent(cookies_enabled);
addLoadEvent(javascript_enabled);
// Toggle page content or warning messages.
if (javascript_enabled() === true) {
var pageContentElem = document.getElementById("page-content");
if (cookies_enabled() === true) {
pageContentElem.style.display = "block";
} else {
var cookieWarningElem = document.getElementById("cookie-warning");
cookieWarningElem.style.display = "block";
pageContentElem.style.display = "none";
}
}
</script>
</body>
</html>
# templates/some_page.html
{% extends "base.html" %}
{% block body_wrapper %}
{# content goes here #}
{% endblock body_wrapper%}
您可以使用<noscript>
标记:
在base.html
中,
<html>
<head></head>
<body>
<noscript>
<h3>Javascript is disabled</h3>
<style type="text/css">
#main {display: none; }
</style>
</noscript>
<script type="text/javascript">
if(!navigator.CookieEnabled){
document.getElementById('main').innerHtml = "Cookies are disabled";
}
</script>
<div id="main">
{# This has the body's main content. #}
</div>
</body>
</html>
相关文章:
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- django没有访问控制允许删除原始标头
- 从Django中的Javascript Form访问GET Form数据
- 如何从JavaScript访问Django登录的用户信息
- 如何从Acrobat PDF JavaScript访问Django Rest Api
- 使用 Django 和 Javascript 访问 Twitter
- Django .html想要访问 html 代码中的选定选项
- Django 和 Ajax Push Engine (APE):不安全的 JavaScript 尝试使用 URL 访问框
- Django:在表的编辑期间未访问视图
- Django:如何访问当前登录的用户'javascript中的s id
- 如何访问django中的itertools对象
- 如何在HTML/Template(Django)中使变量可在所有页面上访问.
- 访问django-for循环中的一个元素
- 用javascript迭代Django模板变量,通过不断变化的索引进行访问
- 如果JavaScript和cookies被禁用,阻止访问Django站点的好方法
- 在Django模板中访问字典值
- 从JSON序列化的django对象访问字段值
- 而不是通过ajax post data来访问django视图
- 从js块中访问django模板变量