麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

js實現跨域的幾種方法匯總(圖片ping、JSONP和CORS)

2024-05-06 16:24:52
字體:
來源:轉載
供稿:網友

平時用慣了jQuery.ajax之類的方法,卻時常忽略了它背后的實現,本文是學習了AJAX基礎及幾種跨域解決方案之后的一些收獲。

跨域

雖然有同源策略的存在,但是在js中跨域也依然很常見,有document.domain、window.name、圖片ping、jsonp、CORS,在這里簡單總結下圖片ping、jsonp和CORS備忘。

圖片ping

圖片可以從任何URL中加載,所以將img的src設置成其他域的URL,即可以實現簡單的跨域,可以使用onload和onerror事件來確定是否接受到了響應。

 

 
  1. var img=new Image(); 
  2. img.src='http://www.companysz.com'
  3. img.onerror=function(){ 
  4. alert('error'); 
  5. img.onload=function(){ 
  6. alert('success'); 

這里新建了一個img對象,給出的url是博客地址,這里是個error事件,所以彈出error;如果將URL改為一張圖片http://images.vevb.com//710118/o_MacBook%20Air.png,就會彈出onload加載信息success,從而實現了簡單的跨域。

使用圖片ping跨域只能發送get請求,并且不能訪問響應的文本,只能監聽是否響應而已,可以用來追蹤廣告點擊。

jsonp

jsonp是帶有回調函數callback的json,原名json with padding,翻譯是填充式json,參數式json。

因為script的src可以跨域,所以在發送的URL后添加一個callback參數傳遞給服務器,然后服務器返回的數據會作為callback的參數,因為這個callback是我們自己來實現的,所以可以對接受到的json數據進行處理。

簡單代碼如下:

 

 
  1. <script type="text/javascript"
  2. function call(data){ 
  3. alert(data.city); 
  4. </script> 
  5. <script type="text/javascript" src='http://freegeoip.net/json/?callback=call'></script> 

這里,我們把腳本的src設置為http://freegeoip.net/json/?callback=call,這是一個獲取用戶ip地址的api(有興趣的可以點擊這里查看),然后將callback作為一個參數拼接在URL后,返回的json數據就會作為callback的參數,在這里callback我們定義為call函數,即返回的json數據就會作為call的參數傳進去,這個call函數僅僅彈出用戶的城市city。筆者這里的輸出結果是河北。其他ip信息可以查看官網,上面有詳細的列表,比如country_name,time_zone等。

CORS(跨資源共享)

CORS是跨資源共享,cross site resourse sharing,它和ajax其實是大體相同的,對于ie實例化的是xdr對象,XDomainRequest,我們能訪問的也只有responseText,觸發的事件有load和error,寫法和xhr大體相同,也需要open和send。

對于ff,chrome等其他瀏覽器實例化的是xhr,在這里myvin僅僅拿xhr來演示下,如果要實現跨瀏覽器,可以配合xdr實現兼容。

xhr如下:

 

 
  1. var xhr=new XMLHttpRequest();  
  2. var url="http://www.companysz.com"
  3. xhr.open('GET', url);  
  4. xhr.send(null); 

這里使用的url是http://www.companysz.com,和ajax唯一的區別就是url使用的是跨域的絕對地址,在ajax中使用的本頁面內的相對地址或絕對地址。

看一下控制臺,這里用的是ff40.0.3,顯示信息如下:

已阻止跨源請求:同源策略禁止讀取位于http://www.companysz.com的遠程資源。(原因:CORS 頭缺少 'Access-Control-Allow-Origin')。

所以用CORS實現跨域還有一步要做,就是在服務器端設置Access-Control-Allow-Origin。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 成人福利视频导航 | 182tv成人福利视频免费看 | 国产在线免 | 精品国产一区二区三区久久久 | 国产又粗又爽又深的免费视频 | 黑人一区二区三区四区五区 | 国产伦精品一区二区三区在线 | 热@国产| 久综合| 精品国产一级毛片 | 欧美伦交 | 18视频在线观看娇喘 | 久久久一区二区三区四区 | 久久久久久久久久久久久久久久久久 | 日韩毛片一区二区三区 | 国产精品美女一区二区 | 羞羞网站在线看 | 久久久久久久一区 | 免费国产成人高清在线看软件 | 在线91视频| 亚洲国产高清视频 | 成人毛片免费在线 | 小雪奶水翁胀公吸小说最新章节 | 色综合久久久久久久久久 | 亚洲国产成人久久成人52 | 美女污污在线观看 | 999久久国精品免费观看网站 | av视在线 | 成人免费毛片在线观看 | 日韩毛片一区二区三区 | 黄污网址 | 国产成人av一区二区 | 深夜精品福利 | 伊久在线 | 欧美一级做一级爱a做片性 久久久资源网 | 国产精品成人一区二区三区电影毛片 | 久久综合九色综合久久久精品综合 | 91网页视频入口在线观看 | 欧美国产91 | 护士xxxx| 欧美成年视频 |