跨域?yàn)g覽器設(shè)置解決前端跨域問(wèn)題
一、什么是跨域
出于瀏覽器的同源策略限制。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響。知識(shí)點(diǎn):跨域只會(huì)出現(xiàn)在瀏覽器上,小程序和APP開(kāi)發(fā)不會(huì)有跨域問(wèn)題
二、什么情況下會(huì)出現(xiàn)跨域
說(shuō)人話就是域名不同的時(shí)候會(huì)出現(xiàn)跨域。下面以 百度 域名為例,在域名的:協(xié)議、主機(jī)名、域名、端口 任何一個(gè)與當(dāng)前訪問(wèn)的站點(diǎn)域名不同時(shí)就會(huì)出現(xiàn)跨域
https://www.baidu.com:443
出現(xiàn)跨域時(shí),瀏覽器控制臺(tái)的報(bào)錯(cuò)如下圖所示
切記:本文章只講述 前端解決跨域的辦法,并且前端解決跨域問(wèn)題只在本地開(kāi)發(fā)時(shí)有效,項(xiàng)目發(fā)布線上需要前端服務(wù)器配置請(qǐng)求代理比如 nginx的反向代理 或 后端允許跨域請(qǐng)求
解決跨域的方法就是“欺騙”瀏覽器 或 刪除瀏覽器限制
三、uni-app 項(xiàng)目 解決跨域辦法
方法一:使用 HBuilderX 內(nèi)置瀏覽器,內(nèi)置瀏覽器是刪除了瀏覽器的跨域限制的。
方法二:在項(xiàng)目根目錄 manifest.json 文件中添加 h5 配置,點(diǎn)我 查看 uni-app 文檔說(shuō)明。
"h5" : { "devServer":{ "proxy":{ "^/api":{ "target":"http://127.0.0.1:8081", "ws": true, "changeOrigin": true } } } }
頁(yè)面請(qǐng)求代碼示例
uni.request({ url:'/api/1.json', // url 要與 proxy 匹配,不能寫(xiě)成 xx.com/api.1.json method:'GET', success: (res) => { console.log(res); } })
四、Vue.js 項(xiàng)目 解決跨域辦法
在項(xiàng)目根目錄 vue.config.js 文件中添加如下配置
/* 開(kāi)發(fā)環(huán)境配置 */ devServer:{ /* 代理目錄 */ proxy:{ '^/api':{ target:'http://127.0.0.1:8081', ws: true, changeOrigin: true } } }
頁(yè)面請(qǐng)求代碼,以 axios 庫(kù)為例
request.get('/api/1.json',{ params }).then(res=>{ console.log(res) })
五、終極解決辦法,刪除瀏覽器跨域限制
如果你的項(xiàng)目不是工程化的,比如 jQuery 技術(shù)棧的話用這種方式最簡(jiǎn)單粗暴
以 chrome 瀏覽器為例
【設(shè)置步驟】
新建一個(gè) Chrome 的桌面快捷方式 在快捷方式上右鍵,點(diǎn)擊【屬性】,打開(kāi)【屬性】面板 在【屬性】面板的【目標(biāo)】中(chrome.exe 后面)按一下空格,再添加以下代碼:
--args --disable-web-security --user-data-dir=D:\MyChromeDevUserData
或者
--disable-web-security --user-data-dir=D:\MyChromeDevUserData
設(shè)置成功以后再打開(kāi)瀏覽器,會(huì)有提示:
“您使用的是不受支持的‘命令行’標(biāo)記: --disable-web-security,穩(wěn)定性和安全性會(huì)有所下降”
此時(shí),正常用戶都可以進(jìn)行跨域訪問(wèn)了,比方本地的前端項(xiàng)目,直連測(cè)試或者線上環(huán)境的接口(前提是目標(biāo)環(huán)境在當(dāng)前瀏覽器登陸過(guò),已經(jīng)存在當(dāng)前賬號(hào)的cookies,session等信息)
以上就是跨域?yàn)g覽器設(shè)置解決前端跨域問(wèn)題的詳細(xì)內(nèi)容,更多關(guān)于跨域?yàn)g覽器設(shè)置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
js 實(shí)現(xiàn)在離開(kāi)頁(yè)面時(shí)提醒未保存的信息(減少用戶重復(fù)操作)
在離開(kāi)頁(yè)面時(shí)判斷是否有未保存的輸入值,然后進(jìn)行提醒,接下來(lái)介紹實(shí)現(xiàn)步驟,感興趣的朋友可以了解下2013-01-01基于JavaScript實(shí)現(xiàn)移動(dòng)端TAB觸屏切換效果
我們使用移動(dòng)端時(shí)可以通過(guò)觸屏手勢(shì)左右滑動(dòng)來(lái)切換TAB欄目,如網(wǎng)易新聞等APP欄目切換。我們說(shuō)的TAB一般由導(dǎo)航條和TAB對(duì)應(yīng)的內(nèi)容組成,切換導(dǎo)航條上的標(biāo)簽同時(shí)標(biāo)簽對(duì)應(yīng)的內(nèi)容也會(huì)跟著切換。本文將結(jié)合實(shí)例給大家介紹一個(gè)移動(dòng)端TAB觸屏切換效果。2015-10-10原生JS實(shí)現(xiàn)圖片輪播 JS實(shí)現(xiàn)小廣告插件
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)圖片輪播、小廣告插件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09使用Javascript和DOM Interfaces來(lái)處理HTML
使用Javascript和DOM Interfaces來(lái)處理HTML...2006-10-10JavaScript中的Window.open()用法示例詳解
這篇文章主要給大家介紹了關(guān)于JavaScript中Window.open()用法的相關(guān)資料,今天在項(xiàng)目中用到了彈出子窗口,就想到了用JavaScript實(shí)現(xiàn)的兩種方法,其中一個(gè)就是window.open(),需要的朋友可以參考下2023-07-07javascript + jquery實(shí)現(xiàn)定時(shí)修改文章標(biāo)題
用javascript+jquery寫(xiě)的一個(gè)定時(shí)器,定時(shí)修改文章標(biāo)題,需要的朋友可以參考下2014-03-03谷歌瀏覽器 insertCell與appendChild的區(qū)別
table中增加單元格時(shí) 在谷歌瀏覽器中使用insertCell方法增加列時(shí),顯示結(jié)果的先后順序與程序執(zhí)行的先后順序相反2009-02-02一個(gè)JavaScript遞歸實(shí)現(xiàn)反轉(zhuǎn)數(shù)組字符串的實(shí)例
這篇文章主要介紹了一個(gè)JavaScript遞歸實(shí)現(xiàn)反轉(zhuǎn)數(shù)組字符串的實(shí)例,很不錯(cuò),非常適合新手朋友們2014-10-10