現(xiàn)在咱們一起來討論瀏覽器跨域請(qǐng)求數(shù)據(jù)的相關(guān)問題。說這樣可能不是很標(biāo)準(zhǔn),因?yàn)榫芙^跨域請(qǐng)求數(shù)據(jù)并不是瀏覽器所獨(dú)有的,之所以會(huì)出現(xiàn)跨域請(qǐng)求不了數(shù)據(jù),是因?yàn)闉g覽器基本都實(shí)現(xiàn)了一個(gè)叫"同源策略"的安全規(guī)范。該規(guī)范具體是什么呢?我們?cè)贛DN上找到了一份資料,地址如下:
專注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)衡山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
瀏覽器同源策略講解
總的來說,當(dāng)A網(wǎng)址和B網(wǎng)址在 協(xié)議 、 端口 、 域名 方面存在不同時(shí),瀏覽器就會(huì)啟動(dòng)同源策略,拒絕A、B服務(wù)器之間進(jìn)行數(shù)據(jù)請(qǐng)求。
說了同源策略,紙上得來終覺淺,絕知此事要躬行,到底同源策略是怎么體現(xiàn)的呢?下面我將結(jié)合代碼一步一步進(jìn)行演示。
1、A服務(wù)器請(qǐng)求不了B服務(wù)器的情況
既然是跨域,我就假設(shè)我有兩個(gè)域名,分別是 A 和 localhost , A 表示小編在阿里云上主機(jī)域名, localhost 顧名思義就是小編的開發(fā)機(jī)器了。我們想象這樣一個(gè)場(chǎng)景,在 localhost 上部署一個(gè) index.html 文件,在 A 服務(wù)器上部署一個(gè)簡(jiǎn)單的 spring-boot 后臺(tái)服務(wù),并提供一個(gè)簡(jiǎn)單的接口暴露給 index.html 文件調(diào)用,最后瀏覽器請(qǐng)求 localhost 的 index.html 文件,看瀏覽器提示什么?
index.html
測(cè)試跨域訪問 hello world
瀏覽器上請(qǐng)求 index.html 文件,顯示如下:
可以發(fā)現(xiàn),請(qǐng)求被瀏覽器給拒絕了,提示我們不允許跨域請(qǐng)求數(shù)據(jù),很難受,怎么解決呢?
2、使用 jsonp 解決跨域請(qǐng)求
首先講下原理,jsonp解決跨域問題主要利用了