華爲手機瀏覽器不支持PUT提交方式的解決方案

最近所在技術團隊在開發webapp項目,前端angularjs+後端.Net MVC API,API登陸接口定義爲PUT提交方式,在作兼容測試時發現UC、safari、微信瀏覽器下均可以登陸,但在華爲自帶瀏覽器下登陸接口老是報錯,抓包發現PUT提交請求體爲空,用Inisomnia模擬提交空值獲得和華爲瀏覽器同樣的接口返回信息,初步判斷爲瀏覽器提交了空值,Google了一下確實存在部分手機瀏覽器不支持PUT提交的狀況,後在華爲官網上了看下了,已有人遇到過來相似的狀況,看來該瀏覽器確實不支持PUT提交。前端

最終解決方案以下:angularjs

查找資料得知PUT和POST差異僅在於Method標識不同,遂決定前端加入判斷,若爲華爲瀏覽器且爲PUT提交時,則將這次提交Method改成POST,同時加入Head信息字段爲"Real-Method",代表這次提交所須要的真實方法;後端用MVC自帶過濾器判斷,若Request中頭信息包含"Real-Method"字段,則將本次請求Method修改成Real-Method的值。web

這樣的好處在於,不用修改原有的PUT接口,依然能夠支持POST請求,以此來兼容那些不支持PUT的手機瀏覽器,且因爲接口還要公共給移動端APP,這樣移動端APP端以前已完成的邏輯就不須要作任何修改了。後端

(咱們僅發如今華爲6 PLUS、4A上有這樣的問題,P8沒有)瀏覽器

附上代碼以下:微信

後端:app

相關文章
相關標籤/搜索