97免费在线观看视频 I 午夜夫妻视频 I 久久久久久网站 I 天堂网男人 I 欧美大波大乳人奶 I 丝袜 中出 制服 人妻 美腿 I 窝窝午夜理论片影院 I 日韩在线伦理电影 I 韩国特级毛片 I 亚洲欧美另类激情 I 在线成人日韩 I 麻豆视频免费看 I 黄色生活毛片 I 极品一线天小嫩嫩真紧 I 色久天堂 I 久久久久久黄色片 I 林智妍三级露全乳电影视频 I 大肉大捧一进一出好爽视频 I 空乘伦理hd I 少妇口述与子做过爱 I 成人免费影片 I 国产精品国内免费一区二区三区 I 日韩制服一区 I 青青草福利在线 I 日本在线观看不卡视频 I 婷婷六月综合亚洲 I 国产又粗又黄又硬 I 美女扒开屁股让男子桶爽 I 欧美性午夜视频观看 I 欧美狠狠插 I 亚洲福利在线观看视频 I 无码抽搐高潮喷水流白浆 I 亚洲欧美国产日韩色伦 I 你懂的视频网站在线观看 I www.蜜桃视频在线观看 I 日本无码人妻精品一区二区蜜桃 I 久久中文字幕人妻丝袜 I 碰草在线视频 I 日韩精品成人av网站

Javascript 跨域知識詳細介紹

2016/11/10 8:43:26   閱讀:2165    發布者:2165

JS跨域知識總結:

在"跨域"一詞經常性地出現以前,我們其實已經頻繁地使用它了。如在A網站的img,
src指向B網站的某一圖片地址,毫無疑問,這在通常情況下都是能正常顯示的(且不論防盜鏈技術);
同樣,可以使script標簽的src屬性指向其它網站的腳本資源
(在某些情況下甚至鼓勵這樣做,以便充分利用其它網站的負載優勢,減小自身服務器的并發量)。
然而,如若使用js去主動請求其它網站的數據,
比如ajax方式,就會遇到讓人郁悶的跨域問題,這也是我們平常所說的跨域。
由于安全原因,跨域訪問是被各大瀏覽器所默認禁止的。這里涉及到同源策略的概念:
同源策略阻止從一個域上加載的腳本獲取或操作另一個域上的文檔屬性。
也就是說,受到請求的 URL 的域必須與當前 Web 頁面的域相同。
這意味著瀏覽器隔離來自不同源的內容,以防止它們之間的操作。

跨域帶來的具體安全問題博主沒有深究,大伙可以自行腦補。

然而,很多情況下,特別是在互聯網持續發展的今天,我們需要請求來自不同合作伙伴或
數據提供商的前端接口,在跨域訪問的方式沒有規范化前(client端跨域訪問的需求看來也
引起w3c的注意了,看資料說html5 WebSocket標準支持跨域的數據交換,應該也是一個將來可選
的跨域數據交換的解決方案),有什么方法能繞過它的限制呢?答案有很多
(雖然都很麻煩),最常用的當屬所謂的JSONP跨域了。

JSONP原理

JSONP的最基本的原理是:動態添加一個<script>標簽,而script標簽的src屬性是沒有跨域的限制的。
這樣說來,這種跨域方式其實與ajaxXmlHttpRequest協議無關了。

JSONP即JSON with Padding。由于同源策略的限制,XmlHttpRequest只允許請求當前源
(域名、協議、端口)的資源。如果要進行跨域請求,我們可以通過使用html的script標記來進行
跨域請求,并在響應中返回要執行的script代碼。 這種跨域的通訊方式稱為JSONP。

來個簡單的例子:

<!DOCTYPE html PUBLIC 
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Test Jsonp</title> <script type="text/javascript"> function jsonpCallback(result) { alert(result.msg); } </script> <script type="text/javascript" src="http://crossdomain.com/
jsonServerResponse?jsonp=jsonpCallback"></script> </head> <body> </body> </html>

  

簡述原理與過程:首先在客戶端注冊一個callback, 然后把callback的名字傳給服務器
(這里客戶端和服務器約定以key為jsonp的查詢字符串值傳遞)。此時,服務器先生成 json 數據。
然后以 javascript 語法的方式,生成一個function , function 名字就是傳遞上來的參數 jsonp。
最后將 json 數據直接以入參的方式,放置到 function 中,這樣就生成了一段 js 語法的文檔,
返回給客戶端。客戶端瀏覽器,解析script標簽,并執行返回的 javascript 文檔,
即執行了預定義的callback函數。

從上述簡述可以推出:除了返回函數形式的js代碼片段,服務端自然能返回所有符合規范的可執行js片段。

JSONP的缺點是:它只支持GET請求而不支持POST等其它類型的HTTP請求;它只支持跨域HTTP請求這種情況,
不能解決不同域的兩個頁面之間如何進行JavaScript調用的問題。(下面還有)

jQuery的Jsonp

如前所述,jsonp并非ajax請求,但是jQuery仍提供與jQuery.ajax一致的方式進行跨域請求:

$.ajax({ 
  url: ’http://crossdomain.com/jsonServerResponse’, 
  type: ’GET’, 
  dataType: ’jsonp’, 
  jsonp: "callback", 
  jsonpCallback: ’functionName’, 
  success: function (data, textStatus, jqXHR) { } 
  //…… 
}); 

  

如上所示,dataType設為jsonp表示這是一次跨域請求,jsonp設為服務端預定的
傳遞函數名稱的查詢字符串key,而jsonpCallback即為js函數名稱;假如jsonpCallback不設置,
那么jQuery將自動生成的隨機函數名(在window對象中加載一個全局的函數,
當代碼插入時函數執行,執行完畢后就會被移除),可推斷該自動生成的函數會回調上述代碼中的success函數。
(當手動為jsonpCallback賦值時,不知道success函數會否回調,
還是說jQuery會尋找預定義的函數,若找不到則報錯?博主懶,以后再試吧。)
當然jQuery為我們提供了一個簡易版本,$.getJSON,這里就不贅述了。

需要注意的是success函數中的jqXHR參數,在ajax請求中,它是正宗的jqXHR對象,
亦可看作是XMLHTTPRequest對象(繼承or封裝),但是在jsonp請求中卻并非如此,
幾乎不能帶給我們如XMLHTTPRequest中最有用的那些信息:
它缺少XMLHTTPRequest的請求狀態信息,所以并不能觸發絕大部分的回調函數,
比如error、complete等(jQuery1.9.0),
而可以被回調的success函數推測應該是由script標記的load事件觸發,
這也同ajax依靠XMLHTTPRequest的狀態的機制完全不同。經試驗,
脫胎于jQuery的zepto(v1.1.3),在jsonp請求出現錯誤,
比如加載js文檔時頭部返回401錯誤時,error函數會執行,但是該函數的jqXHR參數也同樣不是正宗的
jqXHR類型,甚至不能通過它獲取響應的頭部信息,在這種情況下,我們只是被告知某個環節出錯了,
卻并不知道具體的錯誤信息。類似響應頭承載有用信息的場景,博主不建議使用jsonp,可以說,
使用jsonp的一個前提是:除了網絡異常等非業務異常外,所有業務異常(概括地說,
乃是從服務器接收請求到返回響應這段時間內拋出的所有異常)都需要以請求結果的形式直接返回給客戶端,
便于客戶端回調分析。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

主站蜘蛛池模板: 国产精品福利在线观看 | 国内精品久久久久影院一蜜桃 | 亚洲精品屋v一区二区 | 国产剧情av网站 | 午夜黄网 | 999www成人免费视频 | 日本老妇做爰xxx视频 | av毛片在线免费看 | 国产又色又爽又黄的视频在线观看 | 夜夜嗨网站 | 国产精品乱码人妻一区二区三区 | 免费黄毛片 | 99久久中文字幕三级久久日本 | 国产性猛交xxxxxxxx小说 | 一区二区三区网站 | 尤物亚洲国产亚综合在线区 | 91嫩草国产露脸精品国产 | 成年男人裸j网站 | 国产高潮好爽好大受不了了 | 久久综合九色综合欧美亚洲 | 手机看片aⅴ永久免费无码 国产成人精品自产拍在线观看 | 精品一区二区三区在线视频 | 亚洲人成网站在线播放小说 | 激情国产在线 | 久久精品人人做人人爽97 | 午夜两性免费视频 | 国产美女无遮挡裸色视频 | 国产美女免费无遮挡 | 欧美色图一区二区三区 | 最新综合精品亚洲网址 | 欧美精品第三页 | 一区二区三区人妻无码 | 99亚洲男女激情在线观看 | 亚洲精品一区av在线播放 | 少妇厨房愉情理9伦片视频 日韩av无码一区二区三区 | 亚洲精品在线观看网站 | 日日人人爽人人爽人人片av | 亚洲中文字幕高清乱码在线 | 国产精品黑人 | 中国人与黑人牲交free欧美 | 久久婷婷五月综合色d啪 | 午夜影视啪啪免费体验区入口 | 丰满人妻被黑人猛烈进入 | 国产精品看高国产精品不卡 | 天天操天天做 | 94精品激情一区二区三区 | 黄色成年人视频 | www.亚洲.com | 日韩中文免费 | 久久精品 | 亚洲国产欧美中文丝袜日韩 | 亚洲国产精品成人久久蜜臀 | 无码超乳爆乳中文字幕 | 青青草福利视频 | 91精品国产99久久久久久久 | 色天使亚洲综合一区二区 | 色诱亚洲精品久久久久久 | 激情网婷婷 | 国产98在线| 黑人与饥渴少妇在线 | 无码精品人妻一区二区三区漫画 | 国产aa| 国产乱人伦真实精品视频 | 国产综合另类 | 黄色片免费在线播放 | 少妇一级淫片免费看 | 999在线观看精品免费不卡网站 | 色婷婷五月综合亚洲小说 | 国产成人av一区二区三区不卡 | 欧美成人a | youporn国产在线观看 | 不卡无码av一区二区三区 | 三年中国中文在线观看视频 | 成人无码a片一区二区三区免 | 天堂av在线资源 | 妇子乱av一区二区三区 | 天天干天天干 | 澳门久久| 日韩精品东京热无码视频 | 久久亚洲精品国产精品777777 | 中文在线观看av | 男人猛吃奶女人爽视频 | 男人天堂手机在线观看 | 在线免费观看黄色av | 免费无遮挡无码视频在线观看 | 福利视频精品 | 1024手机在线看片你懂的 | 99国产精品久久 | 人妻人人添人妻人人爱 | 青草草在线视频 | 又粗又紧又湿又爽的视频 | 国产亚洲精品a在线观看下载 | 欧美v亚洲| www.欧美视频| 久久午夜无码鲁丝片秋霞 | 国产午夜福利在线观看视频 | 国产精品国产三级国av麻豆 | 久久亚洲影视 | 日韩成人中文字幕 |