華為手機瀏覽器不支持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沒有)

附上代碼如下:

后端:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM