中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ajax和jsonp跨域原理的示例分析

發布時間:2021-07-22 15:29:51 來源:億速云 閱讀:198 作者:小新 欄目:web開發

這篇文章主要為大家展示了“ajax和jsonp跨域原理的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ajax和jsonp跨域原理的示例分析”這篇文章吧。

為什么會有跨域問題? - 因為有同源策略

同源策略是瀏覽器的一種安全策略,所謂同源指的是 請求URL地址中的 協議, 域名 和 端口 都相同,只要其中之一不相同就是跨域

同源策略主要為了保證瀏覽器的安全性

在同源策略下,瀏覽器 不允許 Ajax跨域獲取服務器數據

http://www.example.com/detail.html

跨域請求:

  • http://api.example.com/detail.html 域名不同

  • http://www.example.com:8080/detail.html 端口不同

  • http://api.example.com:8080/detail.html 域名、端口不同

  • https://api.example.com/detail.html 協議、域名不同

  • https://www.example.com:8080/detail.html 端口、協議不同

ajax的基本概念

了解這個概念,首先得先知道同步交互與異步交互

  • 同步交互:客戶端瀏覽器給服務器發送一個請求,服務器返回一個頁面,返回的頁面會把之前的頁面覆蓋掉,我們把這種交互方式稱為同步交互

  • 異步交互:就是可會斷瀏覽器給服務器發送一個請求,服務器返回數據,返回的數據不會把之前的頁面覆蓋掉,我們把這種交互方式稱之為異步交互

ajax主要的應用場景:頁面不刷新,就可以與服務器進行動態的數據交互

交互的原理

  • 同步交互原理:我們在瀏覽器,怎么給服務器發送請求呢?可以點擊超鏈接,提交表單,瀏覽器地址欄輸入地址,都是給服務器發送請求,實際上是瀏覽器幫助我們給服務器去發送請求

  • 異步交互的原理:JavaScript給我們提供了一個新的API接口,幫我們去發送http請求,由XMLHttpRequest 對象來幫助我們發送請求

我們所有的交互操作都可以通過這個對象來完成,發送請求,接受服務器的數據

ajax的具體應用場景

  • 前臺可以通過XMLHttpRequest 給服務器發送請求,然后再通過XMLHttpRequest 對象來接受服務器返回的數據,最后通過dom操作把數據寫到頁面上

  • ajax:可以用來表單輸入規范驗證

  • ajax:也可以用來做性能優化,比如一個頁面非常龐大,這個頁面不可能一次加載完畢,實現一個滾動加載

XMLHttpRequest 交互的四個步驟

      1,實例化XMLHttpRequest 對象

      2,想和服務器進行交互,必須和服務器打開一個連接

      3,給服務器發送數據,發送參數數據到服務器

      4,接受服務器返回的數據,服務器在返回給客戶端的時候會返回一些狀態,可以通過監聽服務器狀態的改變,來更好的操控整個交互流程

ajax跨域

跨域:假設我訪問 a 站點,后臺返回給我一個頁面,然后我又想在 a 站點的這個頁面去訪問 b 站點的資源,這就是一個跨域的效果,跨域瀏覽器是有安全限制的

解決·跨域的方式:jsonp方式

JSONP 全稱是 JSON with Padding ,是基于 JSON 格式的為解決跨域請求資源而產生的解決方案。他實現的基本原理是利用了 HTML 里 <script></script> 元素標簽,遠程調用 JSON 文件來實現數據傳遞。如要在 a.com 域下獲取存在 b.com 的 JSON 數據( getUsers.JSON ):

jsonp解決跨域的本質原理:由于瀏覽器有同源限制,不同站點之間不能相互訪問,但是有時候我們就是想要獲取其他站點的數據,比如加入我們想要獲取一下急速數據的天氣預報數據,這肯定跨域了,那么我們該怎么辦呢?

原理:就是動態創建<script>標簽,然后利用<script>的src 不受同源策略約束來跨域獲取數據。

這樣在后臺就可以獲取到前臺傳過來的那個回調函數,,最后后臺返回這個函數的調用,參數為前臺請求的數據

js代碼

<script type="text/javascript">
 function handleResponse(response){
   console.log(response);
 }
</script>

<script type="text/javascript">
 window.onload = function() {

 var oBtn = document.getElementById('btn');

 oBtn.onclick = function() { 

  var script = document.createElement("script");
  script.src = "https://api.douban.com/v2/book/search?q=javascript&count=1&callback=handleResponse";
  document.body.insertBefore(script, document.body.firstChild); 
 };
};
</script>

以上是“ajax和jsonp跨域原理的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潍坊市| 天门市| 海门市| 类乌齐县| 澄城县| 上犹县| 通江县| 阿城市| 巴彦淖尔市| 安达市| 双桥区| 平度市| 新疆| 庆安县| 霸州市| 延安市| 天峨县| 灵寿县| 巴东县| 石屏县| 铁岭县| 封开县| 盐山县| 桓台县| 阜新| 卢龙县| 扬中市| 淅川县| 舞钢市| 吉隆县| 南郑县| 江北区| 宁都县| 山丹县| 博客| 镇安县| 万载县| 衡阳市| 陵川县| 綦江县| 东乌|