【Web開發】JSONP通信原理淺析
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
簡單說就是,將某JS方法的聲明和調用分別交給前端和后端,通過實參與形參間的傳值實現前后端通信。 這個方案乍看之下似乎有兩個問題,一個是這個“JS方法”是如何實現前后端同步的? 再就是后端服務器上的動態腳本執行環境怎么能調用前端瀏覽器上聲明的JS方法呢? 這里先回答第二個問題。那就是在這個情景下,說JS方法由后端調用,并不等于說執行也是后端在做。 事實是,雖然調用是后端,但執行其實還是在前端瀏覽器中。 而實現這種調用與執行的分離,以及實現“JS方法”的同步,都是靠的一個相同的手段,那就是HTML的 script 標簽。 這個script標簽原本是用來通過http請求加載靜態的JavaScript腳本資源的。可是某個老六突發奇想,用script加載起動態的JavaScript腳本,然后就誕生了JSONP的通信方式。 這里說的所謂“靜態的JavaScript腳本資源”,說的是放在服務器磁盤上一成不變的JavaScript文本資源,誰請求都是得到一個相同的副本,就像提前做好的預制菜一樣。 而所謂“動態的JavaScript腳本資源”,就是說JavaScript文本資源并不是現成的,請求實際是發向一個后端運行的“動態腳本”,比如PHP、JSP之類的。然后JavaScript腳本則是由這些后端腳本再根據具體情況按需生成,整體而言就像“點菜現炒”。 具體說就是,這個“后端腳本”會根據http請求的具體參數的不同響應返回不同的JavaScript腳本文本給瀏覽器端來執行。 于是,那個計劃由“前端聲明后端調用”的JS方法的方法名便由前端創建,并由script標簽發起的http請求的get參數同步給了后端。 接著,后端腳本則根據得到的JS方法名拼接一個對該方法進行調用的JavaScript腳本片段,并將要傳輸給前端的數據作為此次調用的實參。 最后,這個由后端拼接的、帶著實參的“JS方法調用片段”便通過前端script標簽發起的http請求的響應報文從服務器返回給瀏覽器,并在瀏覽器端自動執行。 最終,在執行的過程中,后端的數據便通過JS方法調用時的實參傳遞給了JS方法聲明時的形參,進而進入回調函數,然后執行具體的前端渲染邏輯。 JSONP的流行主要是為了繞過瀏覽器的“同源策略”,實現跨域請求。相比于CORS這種更標準和簡潔的方案,它的優點就是兼容性好,不管多老的版本,只要支持JS的瀏覽器都支持JSONP。 -END-閱讀原文:原文鏈接 該文章在 2025/8/19 9:01:32 編輯過 |
關鍵字查詢
相關文章
正在查詢... |