溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

AJAX常用的兩種跨域方法是什么

發(fā)布時(shí)間:2022-03-19 16:25:29 來源:億速云 閱讀:155 作者:iii 欄目:web開發(fā)

這篇文章主要介紹“AJAX常用的兩種跨域方法是什么”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“AJAX常用的兩種跨域方法是什么”文章能幫助大家解決問題。

  首先什么是AJAX?

  AJAX : Asynchronous JavaScript and XML(異步JavaScript和XML技術(shù))。

  JavaScript:XMLHttpRequest(核心對(duì)象)。

  XML:可擴(kuò)展標(biāo)記語言,數(shù)據(jù)存儲(chǔ)與交換。

  是在不重新加載(刷新)整個(gè)頁面的情況下,與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁的內(nèi)容。

  優(yōu)缺點(diǎn):無刷新技術(shù),提升用戶體驗(yàn),減少網(wǎng)絡(luò)占用;不利于SEO優(yōu)化。

  步驟:

  1. 創(chuàng)建核心對(duì)象

  var xhr=new XMLHttpRequest();

  2. 準(zhǔn)備建立連接

  xhr.open(method, url, async);

  method -- 請(qǐng)求方式:"GET"/"POST"

  url -- 請(qǐng)求資源的URL

  async -- 是否異步,通常 true(異步),如果設(shè)置為 false表示是同步

  3. 發(fā)送請(qǐng)求

  xhr.send();

  4. 處理響應(yīng)

  xhr.onreadystatechange=function(){}

  xhr.readyState -- 就緒狀態(tài)碼

  -- 表示 xhr 狀態(tài)信息,即請(qǐng)求到達(dá)哪個(gè)階段

  -- 4 :請(qǐng)求處理完畢,響應(yīng)就緒

  xhr.status -- HTTP 狀態(tài)碼

  -- 200 :OK,請(qǐng)求成功

  xhr.responseText -- 獲取響應(yīng)文本

  就緒狀態(tài)碼:

  0: 請(qǐng)求未初始化

  1: 服務(wù)器連接已建立

  2: 請(qǐng)求已接收

  3: 請(qǐng)求處理中

  4: 請(qǐng)求已完成,且響應(yīng)已就緒

  常用HTTP:

  1**——信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作

  2**——成功,操作被成功接收并處理

  3**——重定向,需要進(jìn)一步的操作以完成請(qǐng)求

  4**——客戶端錯(cuò)誤,請(qǐng)求包含語法錯(cuò)誤或無法完成請(qǐng)求

  5**——服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過程中發(fā)生了錯(cuò)誤

  說跨域前需要先說說同源策略

  同源策略:

  瀏覽器安全策略,保障非同源資源之間數(shù)據(jù)訪問的安全性。

  默認(rèn)不允許非同源的資源直接訪問。

  URL:協(xié)議://域名:端口/路徑名稱?查詢字符串#hash

  同源:協(xié)議、域名、端口完全一致,只要三個(gè)中有任何一個(gè)不一致,則是非同源

  非同源資源間需要進(jìn)行訪問,則需要實(shí)現(xiàn)跨域。

  跨域方法一:CORS跨域

  CORS跨域比較簡(jiǎn)單,只需要后端在PHP文件頭部加一個(gè)頭信息及:

  header('Access-Control-Allow-Origin:*');

  *表示允許所有域名訪問,如果只是一個(gè)文件訪問則吧*換成指定域名。

  可解決GET/POST跨域需求

  跨域方法二:JSONP跨域

  利用<script>在引入外部JS時(shí)不受同源策略限制的特性,同時(shí)包含JSON編碼數(shù)據(jù)的響應(yīng)體會(huì)自動(dòng)解碼,來實(shí)現(xiàn)跨域。JSONP處理的是GET請(qǐng)求方式的跨域

  步驟:

  后端:

  有服務(wù)器端構(gòu)建一個(gè)字符串:字符串中的內(nèi)容是能夠在 JS 中執(zhí)行的函數(shù)調(diào)用的結(jié)構(gòu)

  前端:

  1. 創(chuàng)建 元素

  2. 設(shè)置 src 屬性,傳遞 callback 參數(shù)指明全局回調(diào)函數(shù)的名稱

  3. 添加到 body 中

  4. 創(chuàng)建全局函數(shù),用于處理響應(yīng)數(shù)據(jù)

  5. 刪除 元素

關(guān)于“AJAX常用的兩種跨域方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI