Android 里面的猪队友 webview 神一样的操作😂

2019-08-09 00:52:17 +08:00
 xiangyuecn

前些天在 Android app 里面测试打开一个第三方的活动页,发现请求头里面居然带了 X-Requested-With 头,值是 app 的包名。。。4.x、9.x 全版本覆盖

能不能去掉?能!写个 5000 行代码自行接管网络请求(能被处理的数据还是被阉割的)就行了。。。关键这个功能模块才 20 行代码😂

这几天每次想到这哔事都会去搜索一番,并没有一个好的解决办法。今天晚上大半夜又爬起来搜索了一下😂 当绝望到想去用腾讯 x5、crosswalk 时候,还是忍忍(少写几行 bug 还是好的)


WebView.loadUrl(url,additionalHttpHeaders)这个方法,简直就像沙雕一样。4.x 好好的,没有问题,测试的 8.0、9.0 会把自定义的请求头名称全部改成小写(包括自定义的 X-Requested-With ),非蠢即坏。

我要小写的时候自然会去写小写的头名称,这种没法控制的干预是不道德的😂

怎么解决,和上面一样,写个 5000 行代码自己处理网络请求😒


webview 关键时候成了鸡肋,更鸡肋的 ios 的 webview 这方面反而更优秀点,半夜不睡纯吐槽👀

改 1 个 bug 引出 10 个 bug,天天写 bug

12525 次点击
所在节点    Android
11 条回复
phy25
2019-08-09 00:58:49 +08:00
「把自定义的请求头名称全部改成小写」我猜是 HTTP2 规范。不过的确比较强制了。
xiangyuecn
2019-08-09 01:05:14 +08:00
@phy25 这个请求中,只有自定义的那个头是纯小写,其他的全部是首字母大写😂 哪门子都算不规范😁
jinliming2
2019-08-09 01:09:27 +08:00
请求头规则上就是不区分大小写的,所以与其吐槽他们强制统一小写在符合标准的前提下统一了大小写避免问题,还不如自己遵守标准在取头的时候遵守标准忽略大小写!
xiangyuecn
2019-08-09 01:15:31 +08:00
记得好多年前碰到腾讯 x5 的一个事故,自作主张的添加了一个非常不规范的头,好像是名称里面带了空格,导致当天大量使用 iis 的网站在微信、使用 x5 的 app 打不开,iis 直接对这种请求返回 400。当天售后哀鸿一片,还好第二天自己恢复了。腾讯里面写这坨代码的人有没有被开除就不清楚了
billlee
2019-08-09 01:16:22 +08:00
http 头的名称从来都是大小写不敏感的
xiangyuecn
2019-08-09 01:19:33 +08:00
@jinliming2 大小写问题,目前只是看着不舒服,一堆大写开头的里面突然冒出一个小写,真碍眼,不过用还是照样用啦。
wwqgtxx
2019-08-09 01:27:39 +08:00
现在大部分后段框架都会忽略请求头的大小写吧,毕竟是规范,很多客户端网络库也会忽略比如老牌的 requests
ysc3839
2019-08-09 01:58:55 +08:00
@phy25 HTTP 标准一开始请求头就是不区分大小写的,只不过大家习惯性首字母大写,但是程序处理时会忽略大小写。
HTTP/2 大概是因为请求头的压缩算法是忽略大小写的。
ysc3839
2019-08-09 02:16:32 +08:00
Windows 自带的 WebBrowser 给人感觉也很难用,不过 Windows 下还有 CEF 这种开源还好用的浏览器框架。
meso5533
2019-08-10 06:31:10 +08:00
X-Requested-With 在广告防作弊方面地位非常重要,因为很难去掉和修改,除非自己接管网络请求
cdeepsleep
2020-02-22 22:53:04 +08:00
大佬可以分享一下你的方案吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590322

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX