欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2015年10月25日 09:28:34   投稿:hebedich  
平時(shí)用慣了jQuery.ajax之類的方法,卻時(shí)常忽略了它背后的實(shí)現(xiàn),本文是學(xué)習(xí)了AJAX基礎(chǔ)及幾種跨域解決方案之后的一些收獲。

跨域

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

圖片ping

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

var img=new Image();
img.src='http://www.dbjr.com.cn';
img.onerror=function(){
 alert('error');
}
img.onload=function(){
 alert('success');
}

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

使用圖片ping跨域只能發(fā)送get請(qǐng)求,并且不能訪問響應(yīng)的文本,只能監(jiān)聽是否響應(yīng)而已,可以用來追蹤廣告點(diǎn)擊。

jsonp

jsonp是帶有回調(diào)函數(shù)callback的json,原名json with padding,翻譯是填充式j(luò)son,參數(shù)式j(luò)son。

因?yàn)閟cript的src可以跨域,所以在發(fā)送的URL后添加一個(gè)callback參數(shù)傳遞給服務(wù)器,然后服務(wù)器返回的數(shù)據(jù)會(huì)作為callback的參數(shù),因?yàn)檫@個(gè)callback是我們自己來實(shí)現(xiàn)的,所以可以對(duì)接受到的json數(shù)據(jù)進(jìn)行處理。

簡單代碼如下:

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

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

CORS(跨資源共享)

CORS是跨資源共享,cross site resourse sharing,它和ajax其實(shí)是大體相同的,對(duì)于ie實(shí)例化的是xdr對(duì)象,XDomainRequest,我們能訪問的也只有responseText,觸發(fā)的事件有l(wèi)oad和error,寫法和xhr大體相同,也需要open和send。

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

xhr如下:

var xhr=new XMLHttpRequest();   
var url="http://www.dbjr.com.cn";
xhr.open('GET', url); 
xhr.send(null);

這里使用的url是http://www.dbjr.com.cn,和ajax唯一的區(qū)別就是url使用的是跨域的絕對(duì)地址,在ajax中使用的本頁面內(nèi)的相對(duì)地址或絕對(duì)地址。

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

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

所以用CORS實(shí)現(xiàn)跨域還有一步要做,就是在服務(wù)器端設(shè)置Access-Control-Allow-Origin。

相關(guān)文章

  • HTML5游戲引擎LTweenLite實(shí)現(xiàn)的超帥動(dòng)畫效果(附demo源碼下載)

    HTML5游戲引擎LTweenLite實(shí)現(xiàn)的超帥動(dòng)畫效果(附demo源碼下載)

    這篇文章主要介紹了HTML5游戲引擎LTweenLite實(shí)現(xiàn)的超帥動(dòng)畫效果,詳細(xì)分析了LTweenLite的下載,動(dòng)畫效果的實(shí)現(xiàn)步驟,并附帶完整的demo實(shí)例源碼供讀者下載,需要的朋友可以參考下
    2016-01-01
  • uniapp微信小程序獲取當(dāng)前定位城市信息的實(shí)例代碼

    uniapp微信小程序獲取當(dāng)前定位城市信息的實(shí)例代碼

    因?yàn)閡niapp官網(wǎng)文檔的定位功能,只能提供經(jīng)緯度,如果要獲取當(dāng)前具體的位置信息,必須要調(diào)取官方的地圖方法,然后在地圖上選點(diǎn),下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序獲取當(dāng)前定位城市信息的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • JS版網(wǎng)站風(fēng)格切換實(shí)例代碼

    JS版網(wǎng)站風(fēng)格切換實(shí)例代碼

    這個(gè)網(wǎng)站風(fēng)格切換除了帶記憶功能外,還可設(shè)定保持時(shí)間,比如5天-180天,過了時(shí)間就自動(dòng)恢復(fù)到默認(rèn)樣式表。
    2008-10-10
  • 如何在JavaScript中優(yōu)雅的提取循環(huán)內(nèi)數(shù)據(jù)詳解

    如何在JavaScript中優(yōu)雅的提取循環(huán)內(nèi)數(shù)據(jù)詳解

    這篇文章主要給大家介紹了關(guān)于如何在JavaScript中優(yōu)雅的提取循環(huán)內(nèi)數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • js實(shí)現(xiàn)完全自定義可帶多級(jí)目錄的網(wǎng)頁鼠標(biāo)右鍵菜單方法

    js實(shí)現(xiàn)完全自定義可帶多級(jí)目錄的網(wǎng)頁鼠標(biāo)右鍵菜單方法

    這篇文章主要介紹了js實(shí)現(xiàn)完全自定義可帶多級(jí)目錄的網(wǎng)頁鼠標(biāo)右鍵菜單方法,實(shí)例分析了javascript實(shí)現(xiàn)自定義網(wǎng)頁鼠標(biāo)右鍵彈出菜單的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 小程序自定義彈框的方法

    小程序自定義彈框的方法

    這篇文章主要為大家詳細(xì)介紹了小程序自定義彈框的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • js實(shí)現(xiàn)計(jì)時(shí)器秒表功能

    js實(shí)現(xiàn)計(jì)時(shí)器秒表功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)計(jì)時(shí)器秒表功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 利用weixin-java-miniapp生成小程序碼并直接返回圖片文件流的方法

    利用weixin-java-miniapp生成小程序碼并直接返回圖片文件流的方法

    這篇文章主要介紹了利用weixin-java-miniapp生成小程序碼并直接返回圖片文件流的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • js仿蘋果iwatch外觀的計(jì)時(shí)器代碼分享

    js仿蘋果iwatch外觀的計(jì)時(shí)器代碼分享

    這篇文章主要介紹了JS+CSS3實(shí)現(xiàn)的類似于蘋果iwatch計(jì)時(shí)器特效,很實(shí)用的代碼,推薦給大家,有需要的小伙伴可以參考下。
    2015-08-08
  • Vant+postcss-pxtorem 實(shí)現(xiàn)瀏覽器適配功能

    Vant+postcss-pxtorem 實(shí)現(xiàn)瀏覽器適配功能

    這篇文章主要介紹了Vant+postcss-pxtorem 實(shí)現(xiàn)瀏覽器適配,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論