如何解決Vue請(qǐng)求接口出現(xiàn)跨域問(wèn)題Access-Control-Allow-Origin
vue請(qǐng)求接口出現(xiàn)跨域問(wèn)題
在使用axios
請(qǐng)求了接口后,發(fā)現(xiàn)并沒(méi)有請(qǐng)求到,F(xiàn)12里面出現(xiàn)如下圖所示的報(bào)錯(cuò)
這是提示跨域了。
所有使用JavaScript的瀏覽器都會(huì)支持同源策略。
同源策略即指域名/協(xié)議/端口號(hào)相同。
只要有一個(gè)不同,就會(huì)當(dāng)作跨域請(qǐng)求。
解決方法
一種是讓后端接口里添加如下兩句代碼:
header('Access-Control-Allow-Origin:*');//允許所有來(lái)源訪問(wèn) header('Access-Control-Allow-Method:POST,GET');//允許訪問(wèn)的方式
當(dāng)然求人不如求己,自己在項(xiàng)目里面設(shè)置代理
- 如果使用vue-cli腳手架創(chuàng)建的項(xiàng)目,找到
config
文件夾下的index.js
文件。 - 找到
dev
下的proxyTable {}
舉個(gè)例子:
如果請(qǐng)求接口為http://www.baidu.com/user/info/list
,請(qǐng)求頭為http://www.baidu.com/
,那么就添加
"/user": { target: "http://www.baidu.com/", changeOrigin: true, }
然后找到請(qǐng)求頁(yè)面,在axios
的請(qǐng)求接口里面只寫(xiě)/user/info/list
就行了。
更新: 另外一種配置方法:
同樣是更改config/index.js
的配置文件:
module.exports = { dev: { proxyTable: { '/api/: { target: 'http://www.baidu.com/', changeOrigin: true, pathRewrire: { '^/api': '' } } } }
上面的配置表示,遇到接口路徑有api
的,就換成http://www.baidu.com/
這個(gè)請(qǐng)求頭,同時(shí)把api
去掉。
因?yàn)榭缬騿?wèn)題一般只存在開(kāi)發(fā)環(huán)境,所以我們可以把axios
進(jìn)行如下配置:
if(process.env.NODE_ENV === 'production') { axios.defaults.baseURL = '/' } else { axios.defaults.baseURL = '/api/' }
這樣,我們?cè)?strong>開(kāi)發(fā)環(huán)境下,就可以通過(guò)增加api
這個(gè)來(lái)配置跨域。
在Vue-cli3.0以上版本時(shí)
在項(xiàng)目根目錄下新建vue.config.js
文件,在該文件內(nèi)新增如下配置:
module.exports = { devServer: { proxy: { '/api': { target: 'https://baidu.com', ws: true, changeOrigin: true, pathRewrite: { '^/api': '' } } } }, }
剩下的axios
配置跟上面一樣,更多關(guān)于vue.config.js
的配置文件請(qǐng)參考官方文檔吧
ok,就設(shè)置完成了,當(dāng)然最后一步千萬(wàn)不要忘了:
關(guān)掉頁(yè)面,從新npm run dev一下,要不即使設(shè)置代理完成也會(huì)請(qǐng)求不到,一定要注意
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3+Element-plus項(xiàng)目自動(dòng)導(dǎo)入報(bào)錯(cuò)的解決方案
vue3出來(lái)一段時(shí)間了,element也更新了版本去兼容vue3,下面這篇文章主要給大家介紹了關(guān)于Vue3+Element-plus項(xiàng)目自動(dòng)導(dǎo)入報(bào)錯(cuò)的解決方案,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07vue單向以及雙向數(shù)據(jù)綁定方式(v-bind和v-model的使用)
這篇文章主要介紹了vue單向以及雙向數(shù)據(jù)綁定方式(v-bind和v-model的使用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊(cè)權(quán)限的操作方法
這篇文章主要介紹了uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊(cè)的權(quán)限,在uniapp中,我們通常會(huì)使用uni-file-picker這個(gè)組件,但是這個(gè)組件中,有點(diǎn)缺陷,就是沒(méi)有對(duì)這個(gè)功能的傳值設(shè)置,這里就要給組件進(jìn)行修改了,需要的朋友可以參考下2022-11-11VUEJS實(shí)戰(zhàn)之利用laypage插件實(shí)現(xiàn)分頁(yè)(3)
這篇文章主要為大家詳細(xì)介紹了VUEJS實(shí)戰(zhàn)之修復(fù)錯(cuò)誤并且美化時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06