【发布时间】:2009-09-09 13:11:19
【问题描述】:
似乎使用 AJAX 的网站和应用程序正在迅速增长。并且可能使用 AJAX 的主要原因之一是增强用户体验。我担心的是,仅仅因为项目可以使用 AJAX,并不意味着它应该。
AJAX 可能会为了用户体验而向网站/应用程序暴露更多安全威胁。也许你还有其他不使用 AJAX 的原因。
什么时候应该避免使用 AJAX?
【问题讨论】:
标签: ajax
似乎使用 AJAX 的网站和应用程序正在迅速增长。并且可能使用 AJAX 的主要原因之一是增强用户体验。我担心的是,仅仅因为项目可以使用 AJAX,并不意味着它应该。
AJAX 可能会为了用户体验而向网站/应用程序暴露更多安全威胁。也许你还有其他不使用 AJAX 的原因。
什么时候应该避免使用 AJAX?
【问题讨论】:
标签: ajax
我通常在汽车网站上看到,那里有品牌和型号。他们通常的<select>(不带JavaScript)包括<optgroup>:
<select>
<optgroup label="Ford">
<option value="21">Escape</option>
<option value="21">F-150</option>
</optgroup>
<optgroup label="Toyota">
<option value="51">Corolla</option>
<option value="52">Yaris</option>
</optgroup>
</select>
然后通常继续隐藏 <select> 并创建 2 个新选择,一个用于品牌,一个用于模型。
到目前为止一切都很好。他们开始在这里搞砸了。
然后他们处理查询服务器以获取品牌列表,然后执行另一个查询以获取模型列表,当他们可以简单地解析原始元素尝试获取他们的信息时。然后,每次更改 make 时,都会发出另一个请求...
以上是不使用 AJAX 的一个很好的例子。考虑一下:请求比解析可用数据要长,所以它们让用户等待。他们可能每次都查询他们的数据库,所以这会影响他们的服务器 CPU 使用率。它会产生更多的带宽。非常浪费资源。
他们应该简单地解析 <select> 下的 DOM 尝试以获取相关信息。每个<optgroup> 是品牌<select> 中的一个项目,而<optgroup> 中的每个子<option> 是模型<select> 中的一个项目。
【讨论】:
当您确定您的客户将使用“未启用 javascript”的浏览器时,您绝对应该避免使用 AJAX
【讨论】:
其实,AJAX应该用来增强用户交互。如果不是,那么 Flash 或你有什么。
当然,如果没有可能的增强功能,就没有理由这样做。我将其标记为极不可能。如果您发现这样的案例,请在博客上写下它:它可能会很有趣。
当然,在某些情况下,AJAX 是禁忌的。基本上,当您没有人使用该网站时。如果您希望网站能够使用 SOFTWARE 驱动请求,那么您必须确保它在没有 AJAX 的情况下也能正常工作。
如果您不希望软件驱动请求,我当然希望您有一个替代 API,它可以完成网站所能做的一切。否则你只是在欺骗自己,让你的客户失望。
【讨论】:
如果您的开发时间有限或您的团队缺乏足够的专业知识,那么您可以为远离 AJAX 编程提供一个很好的理由。
[AJAX 调用] 不安全 比发出正常的 HTTP POST 请求 通过浏览器,如来自 -form-。
对此的“修复”是相同的“修复” 对于非 AJAX 请求 - 使用 SSL。
【讨论】:
我经常听到这种说法——仅仅因为你可以用 Ajax 让它变得漂亮并不意味着你应该这样做。
我不认为你应该把 UI 放在次要位置。这不应该是您最后想到的事情,尤其是在某些情况下。
用户界面就是用户所看到的 - 他们看不到它背后的任何复杂性,因此他们会根据您的网站/应用程序的易用性和对他们的意义来判断您的网站/应用程序的质量.
考虑到这一点,请根据用户的观点决定使用 Ajax。当我单击此按钮时,页面向左滑动以显示新部分是否有意义?看到页面变灰并在前面显示“正在工作...”图像会让我感到安慰还是感到困惑?
【讨论】:
当将用户重定向到用户可能想要添加书签的新页面时 - 即,如果单击链接导致使用 AJAX 更新内容,则用户无法为该页面添加书签。
【讨论】:
当相同的功能可以完全在客户端实现而无需额外往返服务器时,应避免使用 AJAX。
例如,使用美国所有州的邮政编码列表为客户端播种并将邮政编码选择范围限定到适当的集合而不是去服务器获取给定的有效邮政编码列表可能更有效状态。
【讨论】:
AJAX 可能会为了用户体验而向网站/应用程序暴露更多安全威胁。也许你还有其他不使用 AJAX 的原因。
怎么样?有哪些安全威胁?
【讨论】: