摘要:由于跨域的存在,使資源交互在不同域名間變的復(fù)雜和安全。對于跨域數(shù)據(jù)傳輸,當(dāng)數(shù)據(jù)長度較小的長度內(nèi),是一種較好的解決方案。關(guān)于跨域可以參考跨域總結(jié)與解決辦法的端調(diào)用主要功能通過向服務(wù)器,調(diào)用相應(yīng)接口,獲應(yīng)數(shù)據(jù)根據(jù)獲取數(shù)據(jù)結(jié)果做出相應(yīng)回調(diào)。
由于跨域的存在,使資源交互在不同域名間變的復(fù)雜和安全。對于跨域數(shù)據(jù)傳輸,當(dāng)數(shù)據(jù)長度較小(get的長度內(nèi)),jsonp是一種較好的解決方案。
分享一個(gè)自己在jsonp使用過程中的demo。
關(guān)于跨域可以參考:跨域總結(jié)與解決辦法
jsonp的js端調(diào)用主要功能:通過jsonp向服務(wù)器,調(diào)用相應(yīng)接口,獲應(yīng)數(shù)據(jù);根據(jù)獲取數(shù)據(jù)結(jié)果做出相應(yīng)回調(diào)。
/** * jsonp demo * 通過回調(diào)函數(shù),進(jìn)行獲取之后的事件加載 * * @author:cuihuan * @private */ _jsonpDemo:function(callback){ $.ajax({ url: "http://your_site_url", type: "GET", dataType: "JSONP", success: function (data) { if (data && data.status) { if (data.status == "0") { // failure solve ... } else if (data.status == 500) { // server error log _sendInternalLog(data.info); } else if (data.status == 1) { //success solve ... } // callback func (callback && typeof(callback) === "function" ) && callback(); } }, error: function () { _sendFailLog(); } }) }jsonp 服務(wù)器端 (php)
/** * 接口返回相應(yīng)數(shù)據(jù) * * status: 0 標(biāo)示失敗,1標(biāo)示成功,500發(fā)生錯(cuò)誤 * return: jsonp */ public function actionGetJsonPInfo() { try { $data = getNeedData() if ($data["status"] == "success") { $res = array("status" => "1", "info" => $data["info"]); }else{ $res = array("status" => "0", "info" => "0"); } }catch (Exception $e){ $res = array("status" => "500", "info"=> $e); } // jsonp 通過get請求的返回?cái)?shù)據(jù)形式 if (isset ($_GET["callback"])) { header("Content-Type: application/json"); echo $_GET["callback"]."(".json_encode($res).")"; } }總結(jié)
目前來說,數(shù)據(jù)量小的跨域傳輸,jsonp是一種很好的解決方案。
jsonp在data中可以自動(dòng)識(shí)別,res.status,res.info等狀態(tài)位,比較方便。
php端的接受代碼最好不要采用 Access-Control-Allow-Origin:* 風(fēng)險(xiǎn)太大。
本人小站原文
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78237.html
摘要:在這里講解一下用原生如何實(shí)現(xiàn)。當(dāng)然,前面也說過,你可以給定固定回調(diào)函數(shù)名最后我已經(jīng)將和請求合并在一起了,下載鏈接原文鏈接原生實(shí)現(xiàn)如有問題,歡迎在下方留言 相信大多數(shù)前端開發(fā)者在需要與后端進(jìn)行數(shù)據(jù)交互時(shí),為了方便快捷,都會(huì)選擇JQuery中封裝的AJAX方法,但是有些時(shí)候,我們只需要JQuery的AJAX請求方法,而其他的功能用到的很少,這顯然是沒必要的。 其實(shí),原生JavaScript...
摘要:,跨站腳本攻擊。實(shí)際發(fā)的請求就是,用于表示這是一個(gè)請求。,用于告知服務(wù)器根據(jù)這個(gè)參數(shù)獲取回調(diào)函數(shù)的名稱,通常約定就叫。,回調(diào)函數(shù)的名稱,也是前面參數(shù)的值,可省略,會(huì)自動(dòng)生成。 本次課程主要圍繞 PHP 面試和筆試中經(jīng)常會(huì)出現(xiàn)的一些知識(shí)點(diǎn),但是面試官會(huì)在筆試題基礎(chǔ)上深入擴(kuò)展,那么你知道如何更好的回答讓面試官滿意嗎?題目收集自騰訊,迅雷,美圖等公司的筆試面試題,以及本人面試經(jīng)歷中印象中的知...
摘要:什么是跨域跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器施加的安全限制。同源又是什么呢所謂同源是指,域名,協(xié)議,端口均相同。什么是就可以解決跨域問題。 什么是跨域? 跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器施加的安全限制。 同源又是什么呢? 所謂同源是指,域名,協(xié)議,端口均相同。如:http://www.abc....
摘要:由兩部分組成回調(diào)函數(shù)和數(shù)據(jù)?;卣{(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁面中調(diào)用的函數(shù),回調(diào)函數(shù)的名字一般是在請求中指定的。下面是以個(gè)的例子回調(diào)函數(shù)的名字就是是通過動(dòng)態(tài)的元素來使用的,使用時(shí)可以為屬性指定一個(gè)跨域。是為與其他傳遞消息的很相似。 圖像Ping技術(shù) 根據(jù)一個(gè)網(wǎng)頁可以從任何網(wǎng)頁中加載圖像而不用擔(dān)心使用跨域的原理, 我們可以動(dòng)態(tài)的創(chuàng)建圖像, 使用他們的onload和onerror事件處理程序...
閱讀 3856·2023-04-25 16:32
閱讀 2230·2021-09-28 09:36
閱讀 2051·2021-09-06 15:02
閱讀 688·2021-09-02 15:21
閱讀 933·2019-08-30 15:56
閱讀 3534·2019-08-30 15:45
閱讀 1726·2019-08-30 13:09
閱讀 394·2019-08-29 16:05