天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JSONP的應用

  先前因為沒工作需要,不存在需要跨域訪問的應用,一直沒接觸過JSONP,只是了解個大概意思,即是插入一個SCRIPT標簽,設置src,讓瀏覽器加載并自動運行,但具體怎么過程,有什么常見的約定等等不甚了解,今天有機會接觸了,具體說一下.

  1. 其實JSONP也是一個”hack”應用

  由于以前的應用沒現在這么復雜,跨域訪問瀏覽器端沒提供標準的方法(可能那時還根本沒考慮過..),當各種應用不斷的豐富之后,需求也隨之而來了,既然需求來了,但瀏覽器沒提供直接的實現,此時就只能根據已有功能,玩些雕蟲小技,待轉幾個彎,兜幾個圈之后,JSONP就出來了.

  2. hack的背后實現

  瀏覽器加載標簽的靜態資源是可以跨域訪問的,如常見的 link:href, script:src,img:src等等,沒有安全限制,可直接訪問,JSONP正是利用了這個特點,加載不同域上的腳本文件.

  待把腳本script標簽插入DOM上的head標簽內,并設置好src屬性時,瀏覽器就開始加載腳本,腳本下載完后直接運行返回的文本內容.

  3. 我們需要的是數據而非源碼

  hack的過程已經了解,但目前為止作用不大,因為瀏覽器連接返回后獲得資源就是JavaScript源碼,并會立即執行這些源碼,你無法異想天開的將這文本放到一個可控的eval里運行之后獲得結果.假如這源碼是任意的,那運行過程根本無法控制,而我們需要的是數據,而非源碼!
  要想控制這些源碼,獲得腳本運行的控制權,把源碼轉換成我們需要的數據,就得有個約定.

  4. 普遍的相關約定
  既然瀏覽器一定會自動執行返回的腳本這個客觀事實改變不了,我們可以在返回的文本上做點處理,和服務器端作個約定,把個已在存在的回調函數寫在外面,再把數據當作參數傳遞,當瀏覽器運行返回源碼的時候,將調用這個回調函數,這樣,控制權又從瀏覽器傳回到我們的手中,數據即參數,也有了,可以為所欲為.
  這過程中回調函數的名稱是要確定的,通常是在發起前把回調函數名稱以提交參數的形式寫在URL中,服務器再從提交參數中把這回調函數名稱輸出到客戶端.

  如,存在一個全局回調函數 function jsonp_callback(data){ alert(data.a); }

  發起時 : jsonp.connect(‘http://www.example.com/getdata.php?callback=jsonp_callback’);

  //
  在服務器端發現這個callback參數值為jsonp_callback,將輸出類似的文本

  jsonp_callback( /**數據*/{a:’b'} );

  瀏覽器端請求返回后將立即運行 jsonp_callback( /**數據*/{a:’b'} );

it知識庫JSONP的應用,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 全文都是肉高h文 | 无人区在线日本高清免费 | 色淫阁色九九 | 中文字幕亚洲男人的天堂网络 | 国产露脸A片国语露对白 | 色噜噜狠狠一区二区三区 | 国产精品A久久久久久久久 国产精品A久久777777 | 国产国拍亚洲精品永久软件 | 国产GV天堂亚洲国产GV刚刚碰 | 1313久久国产午夜精品理论片 | TIMI1TV天美传媒在线观看 | 国产精品免费一区二区三区四区 | 免费撕开胸罩吮胸视频 | 中国老头oldday tv | 好紧的小嫩嫩17p | 乱叫抽搐流白浆免费视频 | 伊人久久大香线蕉综合bd高清 | 国内精品不卡一区二区三区 | 国产精品一区二区AV97 | 男人吃奶摸下挵进去啪啪 | 久久视频这里只精品99re8久 | 影音先锋av丝袜天堂 | 日本孕妇大胆孕交 | 不戴套挺进人妻怀孕 | 国产 在线 亚洲 欧美 动漫 | 床伴在线观看免费高清完整泰剧第四集 | 久久成人亚洲 | 亚洲精品欧美精品中文字幕 | 成人伊人青草久久综合网 | 挠黑色超薄丝袜脚心vk40分钟 | 久久精品电影院 | 精品国产乱码久久久久久人妻 | 777福彩社区 | 色一欲一性一乱一区二区三区 | 久久久久琪琪精品色 | 99福利影院| 国产在线观看成人免费视频 | 久久亚洲A片COM人成A | 国产午夜a理论毛片在线影院 | 俄罗斯搜索引擎Yandex推广入口 | 一道本av免费不卡播放 |