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