5種處理js跨域問題方法匯總
前兩天碰到一個(gè)跨域問題的處理,使用jsonp可以解決。(http://www.dhdzp.com/article/57889.htm)
最近再整理了一下:
1.jsonp。
ajax請(qǐng)求,dataType為jsonp。這種形式需要請(qǐng)求在服務(wù)端調(diào)整為返回callback([json-object])的形式。如果服務(wù)端返回的是普通json對(duì)象。那么調(diào)試的時(shí)候,在chrome瀏覽器的控制臺(tái)會(huì)報(bào)"Uncaught SyntaxError: Unexpected token"錯(cuò)誤;在firefox瀏覽器的控制臺(tái)會(huì)報(bào)"SyntaxError: missing ; before statement"錯(cuò)誤。
2.iframe跨域。
頁面中增加一個(gè)iframe元素,在需要調(diào)用get請(qǐng)求的時(shí)候,將iframe的src設(shè)置為get請(qǐng)求的url即可發(fā)起get請(qǐng)求的調(diào)用。
iframe方式強(qiáng)于jsonp,除了可以處理http請(qǐng)求,還能夠跨域?qū)崿F(xiàn)js調(diào)用。
3.script元素的src屬性處理
iframe、img、style、script等元素的src屬性可以直接向不同域請(qǐng)求資源,jsonp正是利用script標(biāo)簽跨域請(qǐng)求資源的簡(jiǎn)單實(shí)現(xiàn),所以這個(gè)和jsonp本質(zhì)一樣,同樣需要服務(wù)端請(qǐng)求返回callback...形式。
var url=" var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);
4.在服務(wù)器使用get處理。
對(duì)于業(yè)務(wù)上沒有硬性要求在前端處理的,可以在服務(wù)端做一次封裝,再服務(wù)端發(fā)起調(diào)用,這樣就可以解決跨域的問題。然后再根據(jù)請(qǐng)求是發(fā)出就完,還是需要獲取返回值,來決定代碼使用同步或者異步模式。
private static void CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies)
{
if (string.IsNullOrEmpty(url))
{
throw new ArgumentNullException("url");
}
var request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
if (!string.IsNullOrEmpty(userAgent))
{
request.UserAgent = userAgent;
}
if (timeout.HasValue)
{
request.Timeout = timeout.Value;
}
if (cookies != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
}
request.BeginGetResponse(null,null);//異步
//return request.GetResponse() as HttpWebResponse;
}
5.flash跨域
過于尖端了==,再研究
總結(jié):以上5種方法就是常見的解決js跨域問題的處理方法了,最后一種比較高端,等我研究清楚了再補(bǔ)上吧。
相關(guān)文章
基于javascript實(shí)現(xiàn)精確到毫秒的倒計(jì)時(shí)限時(shí)搶購
現(xiàn)如今做電商網(wǎng)站必不可少的一個(gè)效果就是限時(shí)搶購,這也是各大電商網(wǎng)站的一種促銷手段。如何實(shí)現(xiàn)倒計(jì)時(shí)限時(shí)搶購,本文為大家分享了javascript實(shí)現(xiàn)倒計(jì)時(shí)限時(shí)搶購的的相關(guān)代碼,感興趣的小伙伴們可以參考一下2016-04-04
js 通過cookie實(shí)現(xiàn)刷新不變化樹形菜單
通過設(shè)置cookie來保存樹形菜單的狀態(tài),在頁面加載時(shí)重新讀取cookie來設(shè)置菜單2014-10-10
IE6瀏覽器中window.location.href無效的解決方法
這篇文章主要介紹了IE6瀏覽器中window.location.href無效的解決方法,給出了正確與錯(cuò)誤的實(shí)例對(duì)比,分析跳轉(zhuǎn)無效的原因與解決方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11
JS實(shí)現(xiàn)的簡(jiǎn)單標(biāo)簽點(diǎn)擊切換功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)的簡(jiǎn)單標(biāo)簽點(diǎn)擊切換功能,涉及javascript事件響應(yīng)及頁面元素遍歷、屬性動(dòng)態(tài)變換等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
微信小程序使用form表單獲取輸入框數(shù)據(jù)的實(shí)例代碼
這篇文章主要介紹了微信小程序使用form表單獲取輸入框數(shù)據(jù)的實(shí)例代碼,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
JavaScript讀寫二進(jìn)制數(shù)據(jù)的方法詳解
avascript里有兩個(gè)內(nèi)置對(duì)象,一個(gè)是ArrayBuffer;一個(gè)是DataView,讀寫二進(jìn)制數(shù)據(jù)都需要使用這兩個(gè)對(duì)象。這篇文章主要給大家介紹了關(guān)于JavaScript讀寫二進(jìn)制數(shù)據(jù)的方法,需要的朋友可以參考下2018-09-09
下拉菜單點(diǎn)擊實(shí)現(xiàn)連接跳轉(zhuǎn)功能的js代碼
下拉菜單點(diǎn)擊實(shí)現(xiàn)連接跳轉(zhuǎn)效果想必不是很常見吧,下面與大家分享下具體的實(shí)現(xiàn)另有實(shí)例,感興趣的朋友可以參考下哈2013-05-05
純html+css+javascript實(shí)現(xiàn)樓層跳躍式的頁面布局(實(shí)例代碼)
這篇文章主要介紹了純html+css+javascript實(shí)現(xiàn)樓層跳躍式的頁面布局,需要的朋友可以參考下2017-10-10

