jsonp是什么

今天來跟大家講講故事打厘,一個人很心酸的故事佑吝,jsonp是什么陆馁?

故事的背景起源于我們主管要求我完善的一個功能,在登錄接口401的時候跳轉登錄頁面粒竖,其實講道理這應該是個很簡單的功能,但是我打開我的代碼瞅了一眼几于,發(fā)現(xiàn)我天蕊苗,我的接口請求都是jsonp的,我去沿彭,我真心不知道jsonp怎么拿到請求狀態(tài)碼朽砰。。喉刘。一臉懵逼瞧柔,于是就開始問度娘,搜索了好多頁的關鍵詞睦裳,終于看到了希望造锅,同時也看到了絕望。廉邑。备绽。

jsonp有很多缺陷的,比如:

1鬓催,不能接受HTTP狀態(tài)碼

2肺素,不能使用POST提交(默認GET)

3,不能發(fā)送和接受HTTP頭

4宇驾,不能設置同步調(diào)用(默認異步)

...

其最嚴重的就是不能提供錯誤處理倍靡,如果請求的代碼正常執(zhí)行那么會得到正確的結果。如果請求失敗课舍,如404,500之類塌西,那么可能什么都不會發(fā)生。

這是我看到的一篇博客上的原話筝尾,我仔細思考了一下捡需,確有道理。

再往下看它的解決方法哈:onerror

IE9/10/Firefox/Safari/Chrome都支持script的onerror事件筹淫,如果請求失敗站辉,在onerror上可以進行必要的回調(diào)處理,但是,程序猿最怕但是饰剥,一聽到這句話就感覺是兼容殊霞,omg,兼容問題汰蓉,所以在IE6/7/8/Opera不支持onerror

最后這位博主給了最詳細的解決方法:

1绷蹲,IE9/Firefox/Safari/Chrome 成功回調(diào)使用onload事件,錯誤回調(diào)使用onerror事件

2顾孽,Opera 成功回調(diào)也使用onload事件(它壓根不支持onreadystatechange)祝钢,由于其不支持onerror,這里使用了延遲處理若厚。即等待與成功回調(diào)success拦英,success后標志位done置為true。failure則不會執(zhí)行盹沈,否則執(zhí)行龄章。這里延遲的時間取值很有技巧吃谣,之前取2秒乞封,在公司測試沒問題。但回家用3G無線網(wǎng)絡后發(fā)現(xiàn)即使所引用的js文件存在岗憋,但由于網(wǎng)速過慢肃晚,failure還是先執(zhí)行了,后執(zhí)行了success仔戈。所以這里取5秒是比較合理的关串。雖然這種方式間接實現(xiàn)了failure,但不徹底监徘。

3晋修,IE6/7/8成功回調(diào)使用onreadystatechange事件,錯誤回調(diào)幾乎是很難實現(xiàn)的凰盔。令人惡心的是即使請求的資源文件不存在(404)墓卦。它的readyState也會經(jīng)歷“l(fā)oaded”狀態(tài)。這樣你就沒法區(qū)分請求成功或失敗户敬。最后使用前后臺一起協(xié)調(diào)的機制解決最后的這個難題落剪。無論請求成功或失敗都讓其調(diào)用callback(true)。 此時已經(jīng)將區(qū)別成功與失敗的邏輯放到了callback中尿庐,如果后臺沒有返回jsonp則調(diào)用failure忠怖,否則調(diào)用success。

其實說了這么多抄瑟,總結出來就一句話凡泣,如果你要使用jsonp一定要知道并接受它的缺點,因為你只能適應它,最好的方式就是盡量不要使用jsonp问麸,跨域這塊交給后端來解決往衷,那樣前端就可以使用一些axios、fetch严卖、http等框架來發(fā)送請求席舍,你就能正常的拿到你想要的狀態(tài)碼等一系列vip待遇。

好了哮笆,你們覺得我最后怎么解決這個問題的呢来颤???

參考地址:https://www.cnblogs.com/zhouchaoyi/articles/2085924.html

http://www.reibang.com/p/1f4c6354f4e6

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稠肘,隨后出現(xiàn)的幾起案子福铅,更是在濱河造成了極大的恐慌,老刑警劉巖项阴,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滑黔,死亡現(xiàn)場離奇詭異,居然都是意外死亡环揽,警方通過查閱死者的電腦和手機略荡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歉胶,“玉大人汛兜,你說我怎么就攤上這事⊥ń瘢” “怎么了粥谬?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辫塌。 經(jīng)常有香客問我漏策,道長,這世上最難降的妖魔是什么臼氨? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任掺喻,我火速辦了婚禮,結果婚禮上一也,老公的妹妹穿的比我還像新娘巢寡。我一直安慰自己,他們只是感情好椰苟,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布抑月。 她就那樣靜靜地躺著,像睡著了一般舆蝴。 火紅的嫁衣襯著肌膚如雪谦絮。 梳的紋絲不亂的頭發(fā)上题诵,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音层皱,去河邊找鬼性锭。 笑死,一個胖子當著我的面吹牛叫胖,可吹牛的內(nèi)容都是我干的草冈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓮增,長吁一口氣:“原來是場噩夢啊……” “哼怎棱!你這毒婦竟也來了?” 一聲冷哼從身側響起绷跑,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拳恋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后砸捏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谬运,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年垦藏,在試婚紗的時候發(fā)現(xiàn)自己被綠了梆暖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡膝藕,死狀恐怖式廷,靈堂內(nèi)的尸體忽然破棺而出咐扭,到底是詐尸還是另有隱情芭挽,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布蝗肪,位于F島的核電站袜爪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏薛闪。R本人自食惡果不足惜辛馆,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豁延。 院中可真熱鬧昙篙,春花似錦、人聲如沸诱咏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袋狞。三九已至焚辅,卻和暖如春映屋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背同蜻。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工棚点, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人湾蔓。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓瘫析,卻偏偏與公主長得像,于是被迫代替她去往敵國和親默责。 傳聞我的和親對象是個殘疾皇子颁股,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 介紹JSONP之前 甘有,我們先了解一下,頁面數(shù)據(jù)交互的發(fā)展過程葡缰。來看下面一個例子亏掀。付款是我們?nèi)粘V谐R姷囊环N金錢交易...
    charllote8閱讀 563評論 0 3
  • 高級就要跟后臺打交道MySQL My是數(shù)據(jù)庫作者女兒的名字 開服務之后,頁面如下: 問題:刷新之后泛释,數(shù)值又恢復...
    tsl1127閱讀 245評論 0 0
  • title: JSONP是什么怜校?date: 2018-10-06 11:34:12tags: [JavaScrip...
    祈念念念閱讀 760評論 0 0
  • 前端操作數(shù)據(jù)庫 首先间影,我們試著通過前端來操作一個數(shù)據(jù)庫。數(shù)據(jù)庫是什么茄茁?只要能長久的存數(shù)據(jù)魂贬,就是數(shù)據(jù)庫。文件系統(tǒng)是一...
    是劉快啊閱讀 378評論 0 2
  • https://segmentfault.com/a/1190000007935557 一裙顽、JSONP的誕生 首先...
    JamHsiao_aaa4閱讀 251評論 0 0