日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jsonp跨域请求

發(fā)布時間:2024/1/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsonp跨域请求 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

同源策略:是瀏覽器的一個安全功能,不同源的客戶端腳本在沒有明確授權(quán)的情況下,不能讀寫對方資源。所以a.com下的js腳本采用ajax讀取b.com里面的文件數(shù)據(jù)是會報錯的。
同源:指的是地址里面的協(xié)議(http/https)、域名和端口號均相同

不受同源策略限制的:
  1、頁面中的鏈接,重定向以及表單提交是不會受到同源策略限制的。
  2、跨域資源的引入是可以的。但是js不能讀寫加載的內(nèi)容。如嵌入到頁面中的<script src="..."></script>,<img>,<link>,<iframe>等

jsonp跨域就是利用src訪問資源不受跨域限制,所以可以通過src這個特性來實現(xiàn)跨域訪問數(shù)據(jù)

JSONP的原理:

  (舉例:a.com/jsonp.html想得到b.com/jsonp.php中的數(shù)據(jù))
在a.com的jsonp.html里創(chuàng)建一個回調(diào)函數(shù)xxx,動態(tài)添加<script>元素,向服務(wù)器發(fā)送請求,請求地址后面加上查詢字符串,通過callback參數(shù)指定回調(diào)函數(shù)的名字。
請求地址為http://b.com/main.js?callback=xxx。在jsonp.php中調(diào)用這個回調(diào)函數(shù)xxx,并且以JSON數(shù)據(jù)形式作為參數(shù)傳遞,完成回調(diào)。

  如客戶想訪問 : http://www.runoob.com/try/ajax/jsonp.php?jsonp=callbackFunction
  假設(shè)客戶期望返回JSON數(shù)據(jù):["customername1","customername2"]
  真正返回到客戶端的數(shù)據(jù)顯示為: callbackFunction(["customername1","customername2"])

  

<?php header('Content-type: application/json'); //獲取回調(diào)函數(shù)名 $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']); //json數(shù)據(jù) $json_data = '["customername1","customername2"]'; //輸出jsonp格式的數(shù)據(jù) echo $jsoncallback . "(" . $json_data . ")"; ?> //客戶端頁面 //<div id="divCustomers"></div> <script type="text/javascript"> function callbackFunction(result, methodName){var html = '<ul>';for(var i = 0; i < result.length; i++){html += '<li>' + result[i] + '</li>';}html += '</ul>';document.getElementById('divCustomers').innerHTML = html;} </script> <script type="text/javascript" src="http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script>

采用jsonp跨域也存在問題:
  1.使用這種方法,只要是個網(wǎng)站都可以拿到b.com里的數(shù)據(jù),存在安全性問題。需要網(wǎng)站雙方商議基礎(chǔ)token的身份驗證
  2.只能是GET,不能POST。
  3.可能被注入惡意代碼,篡改頁面內(nèi)容,可以采用字符串過濾來規(guī)避此問題。

?

轉(zhuǎn)載于:https://www.cnblogs.com/changxue/p/8360097.html

總結(jié)

以上是生活随笔為你收集整理的jsonp跨域请求的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。