华为手机浏览器不支持PUT提交方式的解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为手机浏览器不支持PUT提交方式的解决方案相关的知识,希望对你有一定的参考价值。

最近所在技术团队在开发webapp项目,前端angularjs+后端.Net MVC API,API登录接口定义为PUT提交方式,在做兼容测试时发现UC、safari、微信浏览器下都可以登录,但在华为自带浏览器下登录接口总是报错,抓包发现PUT提交请求体为空,用Inisomnia模拟提交空值得到和华为浏览器一样的接口返回信息,初步判断为浏览器提交了空值,Google了一下确实存在部分手机浏览器不支持PUT提交的情况,后在华为官网上了看下了,已有人遇到过来类似的情况,看来该浏览器确实不支持PUT提交。

最终解决方案如下:

查找资料得知PUT和POST差别仅在于Method标识不一样,遂决定前端加入判断,若为华为浏览器且为PUT提交时,则将此次提交Method改为POST,同时加入Head信息字段为"Real-Method",表明此次提交所需要的真实方法;后端用MVC自带过滤器判断,若Request中头信息包含"Real-Method"字段,则将本次请求Method修改为Real-Method的值。

这样的好处在于,不用修改原有的PUT接口,依然可以支持POST请求,以此来兼容那些不支持PUT的手机浏览器,且由于接口还要公共给移动端APP,这样移动端APP端之前已完成的逻辑就不需要做任何修改了。

(我们仅发现在华为6 PLUS、4A上有这样的问题,P8没有)

附上代码如下:

技术分享

后端:

技术分享

以上是关于华为手机浏览器不支持PUT提交方式的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

用secureCRT连接到华为EPON上面时是一片空白的,为啥?

为啥华为手机微信内置浏览器不支持FileReader

为啥浏览器不支持 PUT 和 DELETE 请求,啥时候支持?

华为全新手机操作系统曝光:不基于安卓 正在研发中

SpringBoot 2.x 版本以put方式提交表单不生效的问题详解

SpringBoot 2.x 版本以put方式提交表单不生效的问题详解