最近在公司中,有這樣一個(gè)項(xiàng)目聂喇,在app中辖源,做網(wǎng)頁的銀聯(lián)支付,按說這是沒有什么難度的希太,但是在做的過程中克饶,出現(xiàn)了一個(gè)當(dāng)時(shí)來說很頭疼的問題,
起原:當(dāng)時(shí)因?yàn)槭菧y試銀聯(lián)誊辉,證書是測試證書矾湃,所以沒有在app中走流程,在手機(jī)瀏覽器端走的流程堕澄,當(dāng)流程一切都o(jì)k的時(shí)候邀跃,正式的證書也下來的,我們滿心歡喜的在app上走一遍蛙紫,本感覺已經(jīng)萬事大吉了坞嘀,沒想到在ios中出現(xiàn)了問題,在安卓中一切都好
程序流程:當(dāng)用戶輸入金額后惊来,選擇銀聯(lián)丽涩,點(diǎn)擊充值,前端會調(diào)后臺的接口裁蚁,成功后矢渊,后臺返回一個(gè)html,(html是銀聯(lián)那邊返回的枉证,我們無權(quán)修改)前端這邊解析html矮男,拿到form表單,將form表單放入當(dāng)時(shí)頁面中body的最底部室谚,提交表單毡鉴,提交方式是post。
問題:ios中跳轉(zhuǎn)銀聯(lián)的時(shí)候秒赤,會報(bào)501的錯(cuò)誤猪瞬,安卓沒有問題
過程: 報(bào)501錯(cuò)誤,立馬問了下客服入篮,客服人員說陈瘦,501是因?yàn)樘峤坏姆绞讲粚Γ莋et提交潮售,應(yīng)該是post提交痊项,
本以為是不是ios這里修改了提交的方式锅风,和ios人員溝通后,ios人員說沒有修改過鞍泉;
又以為是ios原生會修改form提交方式皱埠,又用ios原生瀏覽器測了下,沒有問題咖驮,與ios人員再次溝通后边器,雙方從自己的角度去看看有沒有辦法去解決這個(gè)問題;
由是想,前端這里能不能把form提交修改成ajax的提交方式游沿,我們這里把form拆解饰抒,將接口用ajax的方式提交肮砾,但是發(fā)生了跨域問題诀黍,因?yàn)槭莗ost方式,需要后臺做相關(guān)處理仗处,但是后臺是銀聯(lián)那里的眯勾,不會因?yàn)槲覀冞@里去修改東西;ios那里也沒有解決掉婆誓;
時(shí)間已經(jīng)不早了吃环,我們各自先回,待明日再戰(zhàn)洋幻。
晚上難以入眠郁轻,一直再想這個(gè)問題,為什么會這樣N牧簟好唯!為什么
忽然靈光乍現(xiàn),想到是不是因?yàn)閕os在這里新開頁面的問題燥翅,(因?yàn)閕os打開web前端頁面是新開骑篙,而安卓是在當(dāng)前頁面打開)
form提交,ios會打開新的頁面森书,這樣就是get提交靶端,所以會報(bào)501。
次日凛膏,與ios人員溝通后杨名,先讓ios把公共內(nèi)容注釋掉,在當(dāng)前頁面打開猖毫,不去新開頁面镣煮,看是否出現(xiàn)501錯(cuò)誤的問題;最激動人心的時(shí)候鄙麦,ios典唇、前端镊折、后臺都屏息去見證圣神的一刻,如果不行介衔,真的就是黔驢技窮了恨胚;還好老天憐惜我們,事情如流水一樣沒有波瀾炎咖;成功了赃泡!果然是這個(gè)問題,一切都變的十分美好乘盼!
總結(jié):
- 相關(guān)性的知識還有所欠缺升熊,做了好多無用功的事情,
- 當(dāng)時(shí)只想到是ios app里做了處理绸栅,在ios人員表明沒有處理的時(shí)候级野,沒有深挖去對比為什么在原生瀏覽器與安卓上可以,在ios app上不可以粹胯,他們之間的不同點(diǎn)蓖柔;實(shí)際只是一個(gè)新開或當(dāng)前開的區(qū)別,沒有考慮這一點(diǎn)风纠;如果安卓也是新開的况鸣,那么這個(gè)問題就更不好解決了,因?yàn)椴粫J(rèn)為是app的原因竹观,會從銀聯(lián)和前端這方面找原因镐捧,可能花的時(shí)間會更長
- 有時(shí)候,沒有辦法解決的問題臭增,先放下懂酱,轉(zhuǎn)移一下注意力,可能就會柳暗花明