使用jsonp解決跨域請求

          由于同源策略的限制,在一個源下只允許請求當前源(域名、協(xié)議、端口)的資源。如果要在當前源下請求另一個源的數(shù)據(jù),就是跨域請求了.最近碰到這個問題,上網(wǎng)找了一些資料發(fā)現(xiàn)用JSONP可以解決跨域請求的問題,特此記錄下來.

          JSONP是一個非官方的協(xié)議,它允許在服務(wù)器端集成script tags返回至客戶端,通過javascript callback的形式實現(xiàn)跨域訪問。也就是我們可以通過客戶端使用html的script標記來跨域請求服務(wù)端,服務(wù)端響應(yīng)中返回一段script代碼,來回調(diào)客戶端的一個javascript函數(shù).可以直接使用JSON傳遞javascript對象。

          具體使用方式是這樣的:
          假定現(xiàn)在有兩個域:
          域A:client.com
          域B:server.com
          現(xiàn)在client.com需要訪問server.com獲得一些數(shù)據(jù),就可在client.com的頁面中嵌入
          下面這樣的代碼:
          <script type="text/javascript">
               
          // 服務(wù)端返回數(shù)據(jù)的回調(diào)函數(shù)
             function callbackFun(result) {
                  alert(result);
               }
              
          // 創(chuàng)建一個script標簽
              var requestData = document.createElement("script") ;
              requestData.type 
          = "text/javascript";
              
          // src請求指向server端
              requestData.src = "http://server.com?param1=xxx&param2=xxx";
              
          if (heads.length) {
                    heads[
          0].appendChild(requestData);
              } 
          else {
                    document.documentElement.appendChild(requestData);
              }
          </script>
          上述src的請求在server.com中將返回如下數(shù)據(jù):
          callbackFun('[{"key1" : "value1}, {"key2" : "value2"}]')
          其實這個回調(diào)函數(shù)里可以返回任何數(shù)據(jù),可以是json,可以是xml,可以是一段頁面代碼...
          這樣就完成了一次跨域請求
          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
          -->槍聲依舊<--

          posted on 2012-03-08 21:43 槍聲依舊 閱讀(1377) 評論(0)  編輯  收藏 所屬分類: 前端


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          <2012年3月>
          26272829123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 桂平市| 金塔县| 潍坊市| 海门市| 伊川县| 鹤庆县| 盐津县| 定兴县| 萨迦县| 清苑县| 茶陵县| 公安县| 阿拉善盟| 娱乐| 霍城县| 麦盖提县| 长垣县| 馆陶县| 津市市| 五原县| 洪雅县| 阳泉市| 大冶市| 临洮县| 白山市| 佛山市| 察雅县| 化德县| 德惠市| 鹤山市| 噶尔县| 油尖旺区| 福海县| 城步| 民丰县| 乐东| 望谟县| 康乐县| 广州市| 福州市| 达尔|