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的一個前提是:除了網絡異常等非業務異常外,所有業務異常(概括地說,
乃是從服務器接收請求到返回響應這段時間內拋出的所有異常)都需要以請求結果的形式直接返回給客戶端,
便于客戶端回調分析。

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

主站蜘蛛池模板: 国产成人福利视频 | 欧美视频专区一二在线观看 | 三级网站免费看 | 韩国乱码伦视频免费 | 亚洲国产亚综合在线区 | 亚洲中文字幕无码乱线久久视 | 最新国产99热这里只有精品 | 伊人99热 | 激情偷乱人伦小说视频在线 | 国产精品对白久久久久粗 | 夜夜影院未满十八勿进 | 国内自拍第一页 | 国产男女猛烈无遮掩视频免费网站 | 亚洲国产精品久久久久制服 | 色av综合av综合无码网站 | 日本特黄特色大片免费视频网站 | 狠狠色噜噜狠狠狠狠888奇米 | 中文无码字幕中文有码字幕 | 国产黄色在线免费观看 | 啪啪后入内射日韩 | 综合欧美丁香五月激情 | 日本少妇aa特黄毛片亚洲 | 欧美牲交a免费 | 亚洲欧美成人精品香蕉网 | av丝袜在线观看 | 亚洲二区在线视频 | 国产一区二区日本欧美精品久久久 | 亚洲欧洲另类精品久久综合 | 午夜免费国产体验区免费的 | 越做高潮越喷奶水视频 | 不卡视频一区二区 | 免费观看美女裸体网站 | 亚洲三级免费 | 精品一区二区三区无码av久久 | 天天撸天天射 | 久操新在线 | 51真实女性私密spa按摩偷拍 | 欧美一区免费 | 亚洲免费在线视频观看 | 人妻综合专区第一页 | 91欧美在线视频 | 亚洲视频在线免费观看 | 亚洲精品一区av在线播放 | 伊人精品久久久大香线蕉 | 人成免费a级毛片 | 一本色道久久综合狠狠躁篇 | 日韩高清久久 | 亚洲综合欧美制服丝袜 | 在线精品视频一区二区三四 | 日韩精品在线看 | 免费午夜福利在线观看视频 | 伊人久久大香线蕉avapp下载 | 131美女爱做视频 | 人操人| 在线看片免费人成视频无毒 | 色婷婷亚洲精品 | 亚洲日本中文字幕天天更新 | 色爱综合另类图片av | 日韩精品―中文字幕 | 丰满少妇毛片97级无遮挡 | 无码乱人伦一区二区亚洲一 | 国产91精品捆绑调教 | 亚洲精品午夜 | 中文字幕av无码不卡免费 | 亚洲天堂av线 | 激情综合色五月丁香六月亚洲 | 夜夜狠狠操 | 黄桃av无码免费一区二区三区 | 天天天在线综合网 | 国产精品熟妇一区二区三区四区 | 蜜臀av在线播放 | 筱崎爱三级理论在线播放 | 久久成人国产精品 | 青青青视频在线 | 中国美女囗交视频免费看 | 国产亚洲精品久久久久久无 | 成人免费毛片xxx | 福利视频中文字幕 | 一区二区国产在线 | 免费无码av一区二区三区 | 亚洲激情自拍 | 久热在线视频 | 亚洲 日韩 国产 有码 不卡 | 国产香蕉精品 | 亚洲免费在线观看视频 | 少妇av一区二区 | 国产极品美女高潮无套久久久 | 国产精品99久久久久久人免费 | 国产高清露脸孕妇系列 | 女人被狂躁到高潮视频免费无遮挡 | 国产欧美一区二区精品忘忧草 | 久草网av| 一本色道久久综合亚洲精品不 | 天天做天天爱夜夜爽少妇 | 60岁欧美乱子伦xxxx | 亚洲午夜无码毛片av久久京东热 | 久久123区| 国产成人欧美一区二区三区的 | 日本综合色 |