开发者社区 问答 正文

非常非常奇怪的问题---“浏览器把接收到的结果改变了”? 400 报错

非常非常奇怪的问题---“浏览器把接收到的结果改变了”? 400 报错

后台日志:


上一个请求,抓包拿到的值是155
浏览器接收到的

下一个请求,抓包传回来的确实156


简单来说,后台传的值通过网络传输到客户端浏览器,值被改变了 --!
但是在客户机网卡接收到的时候值还是正常的
这个问题太奇怪了

展开
收起
爱吃鱼的程序员 2020-06-03 16:36:20 490 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    整数 10025910025910155 超过 MAX_SAFE_INTEGER 了,

    后台应该返回字符串形式的 apiId

    ######正解~!######正解######回复 @特拉仔 : 验证很简单, 打开浏览器控制台输入 x = 10025910025910155######谢谢,你提出的可能是最根本的问题,我接下来去验证一下 因为对前端所知甚少,在问一点别的问题: NUMBER.MAX_SAFE_INTEGER会影响浏览器解析JSON在调试窗口的呈现么。能够把这个过程详细描述一下喃。想学习一下######

    排除掉一切不可能,剩下的就是真理。

    浏览器不可能有任何逻辑把你的155“加1”成156,这是不可能的。

    剩下的真理:你的程序有Bug、你的抓包逻辑不对、有可能是重复请求导致。

    总之:浏览器不会骗人,是你错了!

    ######

    用curl直接测,不走浏览器,估计结果是一样的。

    ######

    这个思路我咋没想到喃

    ######

    浏览器没有偷偷改返回数据的能力

    ######

    数据走数据库的吗 不可能改到数据库的值

    ######

    统一回答:整数 10025910025910155 超过 MAX_SAFE_INTEGER 了喻恒春 ,给出了正确的回答。

     

    导致这个奇怪的问题出现是因为对JS的数据类型边界不清楚导致说出“浏览器修改了返回值”的谬论。

    ######

    下回用字符串传参 计算别交给前端 别把JS当成一个完成的语言,尤其是运行在浏览器的JS

    2020-06-03 20:49:42
    赞同 展开评论
问答分类:
问答地址: