【问题标题】:Javascript Ajax Graceful-degradation, with Different Pages?Javascript Ajax 优雅降级,有不同的页面?
【发布时间】:2010-12-04 04:27:59
【问题描述】:
我开始更加关注如何让我的 javascript 和 ajax 优雅地降级。哪个更推荐:
- 致力于将优雅降级合并到现有代码中(可能很棘手)
或
- 为非 js 用户开发不同的页面集。
我倾向于使用不同的页面集,因为我觉得这样更容易,而且我可以为每种用户类型(启用 js 或禁用 js)提供最佳结果。你同意我的观点吗?如果不同意,你为什么不同意?
我也担心黑客攻击。例如,黑客进入启用 js 的版本,然后禁用他的 js。关于这一点有什么想法吗?我不太了解黑客攻击,但如果我使用单独的版本,这会是一个安全问题吗?
提前致谢
【问题讨论】:
标签:
javascript
ajax
graceful-degradation
【解决方案1】:
开发两组单独的页面,一组用于启用 JS 的页面,另一组用于非 JS 页面,显然需要大量工作,不仅是最初,而且随着您的应用程序不断发展。如果这不会让你太困扰,我认为这就是要走的路。我认为您对有时非常棘手的同页优雅降级是正确的。有时这只是因为布局:启用 JS 后,您可以简单地隐藏和显示元素,而没有 JS:将所有内容放在哪里?单独的页面集有助于保持页面结构更简洁。
关于黑客攻击:您永远、永远、永远都不能依赖客户端 JavaScript 验证。必须在服务器端检查(或重新检查)所有内容,并且您的服务器端代码可能不会对用户输入做出任何假设。因此,我认为有人在使用应用程序时停用 JS 的场景是无关紧要的。尝试保持非 JS 和 JS 版本的预期用户输入统一,正确验证它,你很好。
【解决方案3】:
虽然它不适用于现有网站,但通常使用 渐进式增强 范式会更有用:构建网站以使其无需特殊插件即可运行,然后开始分层展示您的精彩最重要的是。
这样您就可以确保它从头开始工作并且每个人(包括使用屏幕阅读器的人、关闭图像或样式表的人以及不使用 javascript 的人)都可以访问您的网站。
但是,对于现有网站,这将取决于 ajax 提供的功能。一般来说,您应该努力在禁用 js 的情况下镜像所有 ajax 功能。如果您的 js 版本中存在安全漏洞,那么您的非 js 版本中可能也会存在安全漏洞。 AJAX 无法访问无法通过普通 URL 访问的任何内容。