1
ivvei 2017-01-12 11:32:39 +08:00
500 就是他的统一处理
|
2
hiboshi 2017-01-12 11:32:47 +08:00
他只是懒,换个时间和他说下,比如周一
|
3
imn1 2017-01-12 11:36:01 +08:00
你们上司不管这事么?总是 500 影响企业形象啊
|
4
leisure 2017-01-12 11:39:07 +08:00
错误的数据是啥?客户端不做校验么
|
5
dubuqingfeng 2017-01-12 11:40:48 +08:00
那么就有机会 SQL 注入了,以及各种 DOS 。
|
6
wenhaoy 2017-01-12 11:42:16 +08:00
能出 500 ,说明是异常了,这种代码一般都会有漏洞。看他代码,找个漏洞“自己造”个数据让系统崩溃 /误删 /清空等等,让他认识到错误。还不听,就让老板认识到错误。
如果是他经过判断,自己抛的 500 另说~ |
7
AdamMaggie OP @leisure 客户端的检验也是很被动的,不说他们也不做。
|
8
murmur 2017-01-12 11:43:25 +08:00
能出 500 直接接住了不就完了么。。给用户显示个友好页面这么难么
|
9
old9 2017-01-12 11:43:58 +08:00 via Android
客户端提交了错误数据,不应该丢 4xx 么?
|
10
timi 2017-01-12 11:45:28 +08:00
没有测试人员吗
|
11
AdamMaggie OP @old9 他所给的 500 ,是因为客户端提交了错误的数据,导致服务端出现了异常返回的。也就是说他并没有处理这个_(:з」∠)_
|
12
AdamMaggie OP @murmur 都是一些很小的问题,他认为这些数据都应该是经过了客户端验证的,所以他代码里面很少会有接住的代码。然而我们的前端的小伙伴也并不主动去验证数据|・ω・`)
|
13
jarlyyn 2017-01-12 11:53:08 +08:00
告诉他 500 错误属于服务器错误,是他的工作错误。
让他记录到 Log.每个月统计 500 错误数量,作为他的 kpi 。 客户端的错误叫 4xx ,和 5 开头的没关系。 |
14
lijy91 2017-01-12 11:56:50 +08:00 1
按照 HTTP 标准,验证出错是应该返回 422 的
``` 422 Unprocessable entity The request was formatted correctly but cannot be processed in its current form. Often used when the specified parameters fail validation errors. ``` 另外,服务端验证能更有效的保证数据的准确完整,楼主可以试试通过这个缺陷把系统搞崩溃掉来证明你是对的(慎重,同事关系也很重要)。 |
15
flyingghost 2017-01-12 12:01:28 +08:00 8
电源插头插反了就是应该爆掉,不应该友善的设计保护电路。
汽车撞墙上就是应该去死,不应该友善的弹出安全气囊。 红灯时候过马路就是应该被车撞死,不应该设计行人路权最大的交通规则。 不懂得设计里的防呆设计,这叫见识短。 见识短没关系可以学,但连一丁点浅显的人性化思想都没有,这叫僵硬直板的技术型思维。 但以上都是表象。 我一直认为,不懂换位思考的根本原因,就是自私。 |
16
ys0290 2017-01-12 12:06:36 +08:00 via iPhone
我他娘的一个门外汉都知道前端后端都要检验数据,说白了,你这同事欠 X
|
17
skywayman 2017-01-12 12:12:27 +08:00
觉得这个得分前提,大家不能一上来就"爆"他!
如果一个页面有特么 N 多输入框,每个框的值校验不一样,输出提示又各不相同,业务指导不明确,主要是开发时间紧,换了是我,也是直接 500...我得考虑我先要活下去,再来谈你们的用户体验... |
18
cmaster 2017-01-12 12:37:06 +08:00
这代码能用?试用期都活不过吧
|
19
TonySheva 2017-01-12 12:41:47 +08:00
。。 500 页面??后端写的接口返回处理的结果就可以了啊,他保证了安全以及给出对应提示,展示的页面这些不应该是前端做??为什么要爆他捏?
|
20
jinhan13789991 2017-01-12 12:45:05 +08:00 via Android 2
相信我,默默做好自己的。提高自己然后跳槽。不然你会得罪人,最后也干不下去。
|
21
whimsySun 2017-01-12 12:52:35 +08:00
相信我,默默做好自己的。提高自己然后跳槽。不然你会得罪人,最后也干不下去。
|
22
bk201 2017-01-12 12:58:29 +08:00 via iPhone
其实这个问题就是到底是应该前端负责校验还是后端.我认为都需要,并且前端校验要更严格一些.
|
23
21grams 2017-01-12 13:00:19 +08:00
既然 http 协议定义了 500 ,那肯定有它的用处。
|
24
liuzhiyong 2017-01-12 13:10:58 +08:00
@AdamMaggie 真的很疯狂,服务端验证当然是必需的。不过呢,你别得罪人,日子还得接着混。说两三遍,他不接受意见,那就算了。
|
25
HmyBmny 2017-01-12 13:21:21 +08:00 via Android
500 强
|
26
zhaoshijun 2017-01-12 13:24:18 +08:00
你是他领导吗
|
27
AdamMaggie OP @zhaoshijun 不是。。。。
|
28
zhaoshijun 2017-01-12 13:34:29 +08:00
@AdamMaggie 你管的多了
|
29
kankana 2017-01-12 13:43:00 +08:00 via iPhone
楼主要不来我公司吧……
|
30
Midnight 2017-01-12 13:47:23 +08:00
500 根本就没去验证数据咯
|
31
neutrino 2017-01-12 14:06:15 +08:00
然后他把 500 改成了 200 ,一律返回:服务器内部错误,请重试。
|
32
sighforever 2017-01-12 14:10:45 +08:00
看是什么样的页面呗,给自己人弄得临时小工具,确实不必要瞎折腾
|
33
sharkli 2017-01-12 14:18:14 +08:00
告诉他很多路由器,运营商劫持 500 , 404 啥的错误。
|
34
Cu635 2017-01-12 14:35:41 +08:00
@skywayman
其实“业务指导不明确”这个最关键,要是明确的话倒是可以第一版本先直接 500 ,后续再升级。可要是不明确的话就完蛋了。 |
35
yoa1q7y 2017-01-12 14:40:26 +08:00
一个正常的网站一般很少会出现 500 页面
这绝对属于后端的错误、异常 并不是他所说的“处理流程” |
36
just4test 2017-01-12 15:26:37 +08:00
必须是应该丢 400 页面啊。
|
37
just4test 2017-01-12 15:27:53 +08:00
@AdamMaggie “他认为这些数据都应该是经过了客户端验证的” 后端不应该信任提交的数据是常识。就这一点就可以往死里喷他。
|
38
kushao1267 2017-01-12 15:31:36 +08:00
老大跟我们后端说,绝对不能让用户看到 500 开头的...
|
40
master13 2017-01-12 15:36:43 +08:00
撸主去知乎一类的网站看看“ HOW TO work with the ones you don't like ”
|
41
yubang 2017-01-12 15:37:20 +08:00 2
这个得看各种因素,本身前端就有一次校验,然后后端有一个数据需要 int ,后端直接强制转换成 int ,然后不是 int 的时候抛出 500 也不会有什么危害,同理没传某个参数导致 key 不存在而抛出异常,而不会有什么危害。反正不要出漏洞就好了,非正常数据前端应该拦截,绕开前端过去,抛 500 无可厚非。反正一句话,他写的东西不被攻击就好了。
|
42
1340641314 2017-01-12 15:39:46 +08:00
@yubang 这个在理
|
43
FionWay 2017-01-12 16:16:49 +08:00
既然知道什么数据是错的,什么是对的为什么不约束?让他走一条路,明知道此路不通硬要人走,然后到断头处再回头?
|
44
FionWay 2017-01-12 16:19:35 +08:00
某种程度上,开发的水平体现在严谨、高效,人都是懒的,但是有水平的人会想办法用好的方式解决
|
45
FionWay 2017-01-12 16:22:55 +08:00
@just4test 业务的数据校验确实要做,那么问题总是出在谁做,虽然我只是产品的,但是我都知道,严谨的情况是要共同验证的,而且验证的机制需要同步,客户端验证为了减少接口请求,服务端验证为了严谨, 500 这种在我理解是系统崩溃,根本不在业务范畴
|
46
wupher 2017-01-12 16:28:12 +08:00
因为他懒,永远不要相信前端校验。
无论是 js,还是 Android ,还是 iOS 都不能相信。 |
47
20131115 2017-01-12 16:51:50 +08:00
前后端都要进行校验。
前端校验只是减少不必要的请求,有问题发现在萌芽状态,减少错误提示的延迟,体验也好一些。 服务端做校验是必须的,如果你的数据不做校验,任其异常,指不定要出什么幺蛾子。 对于你同事的这种行为,我表示鄙视! |
48
realityone 2017-01-12 16:55:18 +08:00 via iPhone
有一说一
Docker Daemon 的 API 大部分客户端错误都叫 500 |
49
lan894734188 2017-01-12 17:55:25 +08:00 via Android
还有人直接不返回的
|
50
coofly 2017-01-12 17:59:47 +08:00
发地址,让 v2exer 们教他做猿
|
51
am241 2017-01-12 18:52:50 +08:00 via Android
@flyingghost 不要侮辱技术性思维,这就是懒+不负责任
|
52
xcatliu 2017-01-12 19:01:51 +08:00
@skywayman
> 觉得这个得分前提,大家不能一上来就"爆"他! > 如果一个页面有特么 N 多输入框,每个框的值校验不一样,输出提示又各不相同,业务指导不明确,主要是开发时间紧,换了是我,也是直接 500...我得考虑我先要活下去,再来谈你们的用户体验... 你没看懂,楼主的同事的方案是什么都不验证,只要服务端有异常就返回 500 。而不是验证后不通过统一返回 500 。 |
53
hqfzone 2017-01-12 21:17:04 +08:00
懒,或者没信心处理好。
|
54
techmoe 2017-01-12 22:00:06 +08:00 via Android
没啥大不了的,顶多就是不小心输入错误数据的用户看着一个 500 一脸懵逼呗
|
55
zonghua 2017-01-12 22:02:47 +08:00
@realityone 最怕空指针异常 2333
|
56
ghui 2017-01-12 22:07:36 +08:00 via iPhone
其实也说明后端程序不够健壮,后端不应该依赖前端的输入。换句话说,不管前端做不做校验后端都要做,后端一定要把好门,因为后端的校验是最后一道安全门。
|
57
tabris17 2017-01-12 22:10:13 +08:00
提交错误数据应该报 400 错误,而不是 500 错误,说明请求数据错误
|
58
cs419 2017-01-13 00:27:03 +08:00 via Android
实际上,他应该检验,不过对于你就是多管闲事。
不管前台后台验证要么需求讲清楚,要么让测试催。 对于电脑小白,看到 500 没准会怀疑电脑中毒或者坏了 |
59
changwei 2017-01-13 00:51:25 +08:00 via Android
一般这种人,要么就是偷懒,并且 pm 和老板还漠不关心的,要么就是对用户体验一点概念也没有。
他可能是面向工资在编程,而不是把编程,实现产品作为一种艺术。 |
60
dantegg 2017-01-13 01:30:06 +08:00
揍一顿就好了
|
61
ovear 2017-01-13 01:41:29 +08:00 via Android
其实。。 500 有啥不好的。。看了这么久也没看明白,谁规定 500 非得跳出个错误页面了。。 api 接口不是通除了返回信息来判断,通过 status code 也很常见啊
比如说封装个 error 方法,在提示错误的同时设置 status code 不是很正常么? |
62
XDA 2017-01-13 08:39:38 +08:00 via iPhone
我只知道按规则来,自己犯的错为什么要别人给你擦屁股
|
63
simo 2017-01-13 08:56:39 +08:00
没有标准,只有适合(考虑公司团队规模,产品规模,业务规模,应用场景因素等太多了)
假设功能只有内部人用,极速开发等场景,我负责的项目,省略后台校验没问题。 lz 没说明这件事儿的背景,吃瓜群众们不要乱说 |
64
Clarencep 2017-01-13 09:14:34 +08:00
接收到错误的入参确实不应该用 500 ,使用 400 Bad Request 会更好一点。
话说 500 的服务端错误一般应该是会记录详细的错误日志的吧? 如果用户输入错误都是返回 500 的话倒不失为一个 DOS 的攻击入口 |
65
Clarencep 2017-01-13 09:16:37 +08:00
@jarlyyn 500 错误作为 kpi 这事情以前我们公司还真搞过,但效果就呵呵了 -- 同事搞个 try catch 然后所有的 500 都改成 404 (/ □ \)
|
66
MiguelValentine 2017-01-13 09:22:13 +08:00
我建议你报警
|
67
AdamMaggie OP @simo 不是内部功能,是对外给客户的
|
68
limerick 2017-01-13 09:36:06 +08:00
你们两个的要求不一致。 一个要求是健壮性,一个要求是正确性。至于谁对谁错,就得你们产品的技术要求。
|
69
ooppstef 2017-01-13 09:57:07 +08:00
qa 提个 bug 在系统里面,不改就算事故...
|
70
wizardoz 2017-01-13 13:12:35 +08:00
401 402 403 404 什么的可以合理使用, 500 不能接受啊,500 浏览器的提示是服务器崩溃.
|
71
wizardoz 2017-01-13 13:15:18 +08:00
他这不是懒,他只是太将就了,他没有那种希望自己做出的东西要尽善尽美的欲望.他不适合干这行.
|
72
R18 2017-01-13 13:21:26 +08:00
加入 KPI 体系
|
73
daveze 2017-01-13 13:24:10 +08:00
500 一般是服务器代码异常了,异常了就说明是代码有 bug ,需要修复。期望的是 500 永远不要出现,一旦出现就要找到原因并直到它不出现。
用户数据校验失败应该是返回 4xx 错误更合适,这种应该有个合理的提示告诉用户。 |
74
GeBron 2017-01-13 14:52:54 +08:00
服务端应该校验客户端提交的数据。
|
75
lrh3321 2017-01-13 15:13:00 +08:00
加入 KPI 体系 +1
我们这后台主要做 RESTful API 。 HTTP 状态码一律 200 ,消灭 5xx |
77
shengchao 2017-01-13 17:41:28 +08:00
不应该是服务端和客户端都要做验证吗,是我理解错了吗?
|
78
shengchao 2017-01-13 17:43:55 +08:00
客户端验证是为了更好的用户体验,错误提示什么的,服务端验证是为了程序能够安全的运行,都得做!!!
|
80
SuperMild 2017-01-13 18:31:37 +08:00 via iPad
你管他干嘛,领导自然会管他的
|
81
SuperMild 2017-01-13 18:34:38 +08:00 via iPad
而且你是想当场说服他让他马上承认错误并且谢谢你?一般人都会下意识反驳你的,面子啊。
|
82
ichou 2017-01-13 21:46:55 +08:00 via iPhone
|
83
forestyuan 2017-01-13 23:07:34 +08:00
这个同事肯定不对,后端肯定要校验的。但是,如果领导都不管的话,楼主为啥要操这个心?
|
84
gamexg 2017-01-14 08:58:16 +08:00 via Android
一些理论不可能出错的数据(除非用户攻击)直接强转,错误抛 500 没什么问题。
例如:文章 id ,正常都是数字,有人尝试注入报 500 没什么问题(友好 500 页面,不能把 sql 爆出来)。 |
86
ic3z 2017-01-14 09:44:38 +08:00 via Android
@产品经理
|
87
Reficul 2017-01-14 10:50:25 +08:00 via Android
@realityone 又黑 docker😂
|
88
Technetiumer 2017-01-14 13:40:26 +08:00
抛 500 没问题,但是这个 500 一定得是他写的代码抛的,而不是未经处理的服务器出错抛的
|