华为手机浏览器不支持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提交方式的解决方案的更多相关文章
- 华为手机浏览器 onclick失灵的问题
		
开发h5 遇到的问题是华为浏览器onclick 点击失灵. 下面这个网站是检查 浏览器是否支持es6语法的网站 http://ruanyf.github.io/es-checker/index.cn. ...
 - 中文版Chrome浏览器不支持12px以下字体的解决方案
		
中文版Chrome浏览器不支持12px以下字体的解决方案 Chrome 27之前的中文版桌面浏览器会默认设定页面的最小字号是12px,英文版则没有限制,主要是因为chrome认为汉字小于12px就会增 ...
 - mui 页面无法下滑拖拽 主要体现在华为手机浏览器
		
项目做到中期遇到一个问题,华为手机有些页面显示不全且无法下滑. 因为之前一直用的Google浏览器的模拟模式进行开发和调试的,一直未发现这个问题. 刚开始 选用mui的下拉刷新上拉加载的方式来进行页面 ...
 - 手机浏览器不支持 IDBObjectStore.getAll
		
最近在学习IndexDB,使用了IDBObjectStore.getAll,发现手机上不支持. 后面,查阅了mdn:  的确是不支持,且可以看到这个函数现在兼容性很差. 解决方法: 1.使用 IDB ...
 - 【转】让iframe在iOS设备手机浏览器上支持滚动
		
HTML代码 在使用IFRAME或者其他HTML元素时,你需要使用一个元素(如DIV)来包装他们: <div class="scroll-wrapper"> <i ...
 - css3在不同型号手机浏览器上的兼容一览表
		
网上搜集了css3对不同系统手机浏览器的支持情况(ios/android/winphone)备份一下以便查看. 以下资料由微信产品部"白树"整理, 转载请注明. √:完全支持 ...
 - 手机浏览器自动播放视频video(设置autoplay无效)的解决方案
		
1.问题的提出 某一天接了个需求,需要在手机的H5页面内加入视频,我开开心心做完,准备交付的时候,问题来了,PM想要用户一进入页面,视频就开始播放,不需要用户手动点击. 2.尝试解决 加autopla ...
 - springMVC怎么改变form的提交方式为put或者delete
		
想着练习一下创建restful风格的网站呢,结果发现在jsp页面上并不能灵活使用put和delete提交方式.下面我的解决办法 一. form 只支持post和get两种提交方式,只支持get提交方式 ...
 - JSP表单提交中文乱码解决方案
		
分2种提交方式,解决方案不同: 1.form表单提交方式为get 乱码: 解决方案: 因为get方法是参数在URL中显示,因为tomcat的URL编码默认是:IOS-8859-1所以要么改tomcat ...
 
随机推荐
- HTML5 & CSS3初学者指南(1) – 编写第一行代码
			
介绍 网络时代已经到来.现在对人们来说,每天上网冲浪已经成为一种最为常见的行为. 在网页浏览器中输入一段文本地址,就像http://www.codeproject.com,等待一下,网页就加载到浏览器 ...
 - 在面试中忽然发现DateTime的一些...
			
今天说说我面试中碰到的一个小问题,在我问起DateTime为什么无法赋值NULL值,一般第一反应都认为它是值类型,不是引用类型,但随后我查阅了度娘自我学习到它是结构类型,那么随之而然就无法赋值NULL ...
 - python常用模块
			
os模块 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os ...
 - 更改默认alert框体
			
更改框体主要用到的是更改系统的内置控件winpop下面是winpop具体代码 (function(window, jQuery, undefined) { 2 3 var HTMLS = { 4 ov ...
 - CRL快速开发框架系列教程八(使用CRL.Package)
			
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
 - ZFPlayer 源码解读
			
源码下载地址:https://github.com/renzifeng/ZFPlayer 之前自己实现过一个模仿百思不得姐的demo https://github.com/agelessman/FFm ...
 - RepositoryBase文件解析
			
public class RepositoryBase<T> : IRepository<T> where T : class RepositoryBase 是IReposit ...
 - C#基础回顾(一)—C#访问修饰符
			
一.写在前面的话 好久没有停下来总结自己,转眼间15年过去好些天,回首过去的日子,亦或失去,亦或所得!生活的节奏,常常让我们带着急急忙忙的节奏去追赶,也许这并不是每个人所期望的生活方式!于他人,于自己 ...
 - jQuery2.x源码解析(回调篇)
			
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 通过艾伦的博客,我们能看出,jQuery的pro ...
 - ASP.NET Core 中文文档 第三章 原理(16).NET开放Web接口(OWIN)
			
原文:Open Web Interface for .NET (OWIN) 作者:Steve Smith. Rick Anderson 翻译:谢炀(kiler398) 校对:孟帅洋(书缘) ASP.N ...