javascript 跨域問(wèn)題以及解決辦法
javascript 跨域問(wèn)題以及解決辦法
什么是跨域問(wèn)題?
跨域這個(gè)問(wèn)題是由于瀏覽器的同源策略引起的,請(qǐng)求的URL地址,必須與瀏覽器的URL是相同協(xié)議、相同域名、相同端口的,否則是不允許訪問(wèn)的
| 瀏覽器URL | 要訪問(wèn)的URL | 結(jié)果 |
|---|---|---|
| http://www.123.com/index | http://www.123.com/server | 成功 |
| http://www.123.com/index | http://www.456.com/server | 域名不相同,跨域 |
| http://www.123.com:8080/index | http://www.123.com:8888/index.htm | 端口不同,跨域 |
| http://www.123.com/index | https://www.123.com/index | 協(xié)議不同,跨域 |
解決辦法
凡是擁有src屬性的標(biāo)簽都可以跨域,比如script、img、iframe標(biāo)簽
JSONP
JSONP就是應(yīng)用了script標(biāo)簽,JSONP的全稱是JSON With Padding,JSONP由兩部分組成,回掉函數(shù)和數(shù)據(jù),回掉函數(shù)就是當(dāng)響應(yīng)到來(lái)時(shí)應(yīng)該在頁(yè)面中調(diào)用的函數(shù),回掉函數(shù)的名字是在請(qǐng)求中指定的,而數(shù)據(jù)就是傳入回掉函數(shù)的JSON數(shù)據(jù)
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function jsonCallback(data){
alert(data);
};
var url = "http://localhost:8888/test?callback=jsonCallback";
var script = document.createElement('script');
script.type = "text/javascript";
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);
</script>
</head>
<body>
</body>
</html>
缺點(diǎn):確認(rèn)JSONP請(qǐng)求是否失敗并不容易
安全性的問(wèn)題,JSONP是從其他域加載代碼執(zhí)行,所以要確定其可靠性
以上就是javascript 跨域問(wèn)題以及解決辦法的講解,大家如果 有疑問(wèn)可以留言討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
JS實(shí)現(xiàn)燈泡開(kāi)關(guān)特效
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)燈泡開(kāi)關(guān)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
關(guān)于JSONP跨域請(qǐng)求原理的深入解析
JSONP(JSON?with?Padding)是JSON的一種“使用模式”,可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問(wèn)的問(wèn)題,這篇文章主要給大家介紹了關(guān)于JSONP跨域請(qǐng)求原理的相關(guān)資料,需要的朋友可以參考下2022-01-01
knockoutjs模板實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)列表
這篇文章主要介紹了knockoutjs模板實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)列表的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-07-07
JavaScript 數(shù)組展平方法: flat() 和 flatMap()詳解
從 ES2019 中開(kāi)始引入了一種扁平化數(shù)組的新方法,可以展平任何深度的數(shù)組,這篇文章主要介紹了JavaScript 數(shù)組展平方法: flat() 和 flatMap()詳解,需要的朋友可以參考下2023-06-06
jQuery ajax(復(fù)習(xí))—Baidu ajax request分離版
你沒(méi)有看錯(cuò)標(biāo)題,本文的確是在講Baidu ajax,不過(guò)是很久很久以前的版本了,我們先分析一段簡(jiǎn)單的ajax代碼,來(lái)自早期的百度七巧板項(xiàng)目通過(guò)這個(gè)來(lái)先復(fù)習(xí)一遍ajax的知識(shí)2013-01-01
js中通過(guò)getElementsByName訪問(wèn)name集合對(duì)象的方法
下面小編就為大家?guī)?lái)一篇js中通過(guò)getElementsByName訪問(wèn)name集合對(duì)象的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
使用js在layui中實(shí)現(xiàn)上傳圖片壓縮
這篇文章主要介紹了使用js在layui中實(shí)現(xiàn)上傳圖片壓縮,layui 是一款采用自身模塊規(guī)范編寫(xiě)的前端 UI 框架,js上傳圖片壓縮百度有很多方法,,需要的朋友可以參考下2019-06-06

