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的全稱(chēng)是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)簡(jiǎn)單tab選項(xiàng)卡切換
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)簡(jiǎn)單tab選項(xiàng)卡切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-1067 個(gè)節(jié)約開(kāi)發(fā)時(shí)間的前端開(kāi)發(fā)者的工具、庫(kù)和資源
在本文中,我不會(huì)去談 React、Angular、Vue 等等這些大的前端框架,也不會(huì)談 Atom、VS code、Sublime 等等這些已經(jīng)很出名的代碼編輯器,我只是想簡(jiǎn)單的分享一套我認(rèn)為有助于提升開(kāi)發(fā)者工作流的工具集2017-09-09JS實(shí)現(xiàn)禁止鼠標(biāo)右鍵的功能
遇到網(wǎng)頁(yè)上有精美圖片或者精彩文字想保存時(shí),通常大家都是選中目標(biāo)后按鼠標(biāo)右鍵,在彈出菜單中選擇“圖片另存為”或“復(fù)制”來(lái)達(dá)到我們的目的。但是,目前有許多網(wǎng)頁(yè)都屏蔽了鼠標(biāo)右鍵,那么用js如何實(shí)現(xiàn)禁止鼠標(biāo)右鍵的功能呢?下面小編給大家介紹下2016-10-10帶你用原生js寫(xiě)一個(gè)簡(jiǎn)單的注冊(cè)登錄頁(yè)面
這篇文章主要給大家介紹了關(guān)于如何使用原生js寫(xiě)一個(gè)簡(jiǎn)單的注冊(cè)登錄頁(yè)面的相關(guān)資料,文中介紹了一個(gè)以js驗(yàn)證表單的簡(jiǎn)潔的注冊(cè)登錄頁(yè)面,需要的朋友可以參考下2023-06-06本地Bootstrap文件字體圖標(biāo)引入?yún)s無(wú)法顯示問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了本地Bootstrap文件字體圖標(biāo)引入?yún)s無(wú)法顯示問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12TypeScript利用TS封裝Axios實(shí)戰(zhàn)
這篇文章主要介紹了TypeScript利用TS封裝Axios實(shí)戰(zhàn),TypeScript封裝一遍Axios,能進(jìn)一步鞏固TypeScript的基礎(chǔ)知識(shí),需要的小伙伴可以參考一下2022-06-06javascript 鼠標(biāo)拖動(dòng)圖標(biāo)技術(shù)
剛剛學(xué)習(xí)了個(gè)js的小技術(shù),還蠻好玩的,以后會(huì)把做的一些小例子貼上來(lái),方便自己也可以跟大家一起分享學(xué)習(xí)成果,哈哈~~2010-02-02js實(shí)現(xiàn)類(lèi)似于add(1)(2)(3)調(diào)用方式的方法
這篇文章主要介紹了js實(shí)現(xiàn)類(lèi)似于add(1)(2)(3)調(diào)用方式的方法,需要的朋友可以參考下2015-03-03bootstrap datepicker插件默認(rèn)英文修改為中文
這篇文章主要為大家詳細(xì)介紹了bootstrap datepicker插件默認(rèn)英文修改為中文的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07FireBug 調(diào)試JS入門(mén)教程 如何調(diào)試JS
這篇文章主要為大家介紹下通過(guò)firefox的FireBug調(diào)試JS,需要的朋友可以參考下2013-12-12