Html 对于web应用程序的用户错误更正,人们的普遍共识是什么?

Html 对于web应用程序的用户错误更正,人们的普遍共识是什么?,html,Html,我正在建立一个RoR站点,今天我完成了分页。在向我的同事展示它时,他的第一个问题是“如果将querystring设置为”?page=-1,会发生什么情况”。它因运行时异常(错误500)而终止。他建议,在该站点接近live之前,一定要修复该问题 我碰巧不同意他的意见(听我说完).现在,我从事web开发业务已经四个月了,所以我很可能是错的。但我认为这没什么大不了的。我认为,只要所说的错误不构成安全风险,像这样的事情就不应该是优先考虑的。导致此错误的唯一方法是手动编辑查询字符串,以及如果你足够聪明,知

我正在建立一个RoR站点,今天我完成了分页。在向我的同事展示它时,他的第一个问题是“如果将querystring设置为”?page=-1,会发生什么情况”。它因运行时异常(错误500)而终止。他建议,在该站点接近live之前,一定要修复该问题

我碰巧不同意他的意见(听我说完).现在,我从事web开发业务已经四个月了,所以我很可能是错的。但我认为这没什么大不了的。我认为,只要所说的错误不构成安全风险,像这样的事情就不应该是优先考虑的。导致此错误的唯一方法是手动编辑查询字符串,以及如果你足够聪明,知道你甚至可以编辑查询字符串,你应该足够聪明,不会给它一个负数

<> P>什么是对这样的事情的普遍共识?你对站点有完全的白痴证明,所以无论查询字符串是什么,你都不会产生错误吗?只要它按照它应该的方式工作(并且不暴露安全风险),你会让事情滑动吗?在某个地方?


编辑:不知何故,我的问题并没有完全按照我的意图提出。我问题的关键是,在主动纠正与不纠正之间的界限在哪里。例如,如果get字符串中存在无效输入,那么按照发布的回复中的建议显示有品味的错误会更好吗或者,作为一个更具体的例子:如果用户在get字符串中设置了page=-1,那么最好默认他们的意思是page=0,或者显示某种有品味的错误页面,比如说“指定的页面无效”“?

如果你有一个看起来不错的错误页面,并且给出了一个礼貌的信息,我会说这很好。虽然我可以考虑用404来代替。垃圾输入最好不会产生错误。

您提出了一些好的观点,但错误的查询字符串可能有很多原因。例如,指向已删除记录的链接。或者指向当前结果集中不再存在的页面的Google结果


在这些情况下,您应该向用户显示比500错误更详细的信息。

我同意您的观点,错误消息是必要的和有用的,但您应该尝试区分,例如,在用户请求的页面不存在时,您应该给出一个404。

您应该检查来自查询字符串的任何内容。如果您得到一个无效的页码,您应该会收到一条比错误500页稍微优雅一点的错误消息。可能是
对不起,请求不正确。试试这个:
。明知故犯,故意在现场留下这样一个易于访问的错误,这是非常草率和不专业的


你说你是网络应用的新手,但如果你以前的开发经验是“普通大众”(非开发人员、非技术人员)使用的其他GUI应用,那么当应用程序崩溃时,将堆栈跟踪扔到用户脸上可以吗?根据我的经验,这永远都是不可接受的。

我认为一个500错误的页面对普通用户来说不是很有意义。至少告诉他你的页面有什么问题,并通过提供一个链接让他回到你的站点,引导他回到正确的轨道上


有时,我会将用户重定向到一个可能符合其需求的页面。因此,当一个查询低于零且这是不允许的,请将用户重定向到?page=0,并可能在该页面顶部显示一条消息。我认为您应该更喜欢这种方法,因为在用户体验方面,不使用模态窗口是一种更好的方法。

它因项目而异。你预计有多少用户?如果每天游客人数低于1万人,情况可能不会那么糟糕。您预计有多大比例的用户会遇到此问题?我不期望有太多,但你会知道的最好

目标应该是定期交付产品并进行改进。希望产品整体上是健康的


对于解决方案,如果未找到页面,则应抛出4xx错误,而不是5xx错误。5xx错误通常需要更深入的研究,虽然很难在启动时直接编写气密的应用程序,但您应该尝试为4xx和5xx错误提供一个通用处理程序。

在PCI游戏(信用卡验证/验证)中,规则是验证一切,不允许白痴。因此,答案取决于您的应用程序。

+1。我不认为你可以让你的网站/应用程序成为防白痴的(白痴现在很聪明),但这绝对是最低限度。@TandemAdam:不,你说得对,只要你认为它是防白痴的,就有人会创造一个更好的白痴!但是是的,有一些最低限度是可以维持的。尤其是如果客户为此付费的话。如果我付钱给某人来建立我的网站,这肯定会在我的测试列表上,而“错误500”的结果肯定是不可能的。不幸的是,我以前的工作经验是“大学”。这是我参与的第一个真正的项目。在大学里,除了我上学期上的一门软件工程课程外,我们从未接触过GUI。话虽如此,你是对的。向用户脸上扔堆栈跟踪肯定不行。这就是我现在正在做的。任何无效的页面值都默认为page=1(第一页/最近的帖子)。我认为给用户一个通知是合适的,只是不要让它成为一个模式对话框,或者在没有关键事件发生时导航到错误页面。(在我看来,提供错误的查询参数并不重要)