vue 處理跨域問題及解決方法小結(jié)
當你在發(fā)送網(wǎng)絡(luò)請求的時候,出現(xiàn)以下保存信息,恭喜你跨域了
Access to XMLHttpRequest at 'XXXXX' from origin 'XXXXXX' has been blocked by
CORS policy: Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
1.1什么是跨域呢?
跨域問題的出現(xiàn)是因為瀏覽器的同源策略問題,所謂同源:就是兩個頁面具有相同的協(xié)議(protocol),主機(host)和端口號(port),它是瀏覽器最核心也是最基本的功能,如果沒有同源策略我們的瀏覽器將會十分的不安全,隨時都可能受到攻擊。
當,協(xié)議名,域名,端口號,三者有一個不同都會發(fā)生跨域問題
這里強調(diào)一點:發(fā)生了跨域,并不是請求沒有發(fā)送出去,它是請求發(fā)送成功了,并且服務(wù)端也給你把數(shù)據(jù)返回了,但是瀏覽器為了安全性給拒絕了。
2.2如何解決跨域呢?
1.方法一
條件允許的話可以與后端交流,后端在回應(yīng)的時候加上響應(yīng)頭,前端不需要任何操作就可以處理跨域
2.方法二
vue腳手架提供了一個很簡便的方法 :
如果你用的是cli3以上,目錄中沒有了配置文件,需要你自己在根目錄新建一個vue.config.js文件可以在里邊添加你需要的配置信息
module.exports={
pages: {
index: {
//入口
entry:"src/main.js",
},
},
devServer: {
proxy: {
'/api': {
target: '需要請求的url',
pathRewrite:{'^/api':''},
ws: true,
changeOrigin: true
}
}
}
}
它會創(chuàng)建一個代理服務(wù)器,代替瀏覽器去向后端請求數(shù)據(jù),因為服務(wù)端和服務(wù)端是不存在跨域問題的。
這個代理服務(wù)器的 協(xié)議域名端口號 跟你運行項目時候的 協(xié)議域名端口號 是一樣的 你可以在請求數(shù)據(jù)的時候
使用 http://localhost:8080/api 當你在請求數(shù)據(jù)的時候加上/api 才會識別你需要處理跨域呢,不加就是訪問項目的根目錄下的相應(yīng)數(shù)據(jù)
3.方法三
使用jsonp 但是只能處理get的請求 像post put patch 等都不能處理
到此這篇關(guān)于vue 處理跨域問題的文章就介紹到這了,更多相關(guān)vue 處理跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實現(xiàn)一個矩形標記區(qū)域(rectangle marker)的方法
這篇文章主要介紹了vue實現(xiàn)一個矩形標記區(qū)域 rectangle marker的方法,幫助大家實現(xiàn)區(qū)域標記功能,感興趣的朋友可以了解下2020-10-10
vue+element?tree懶加載更新數(shù)據(jù)的示例代碼
這篇文章主要介紹了vue+element?tree懶加載更新數(shù)據(jù),文中給大家補充介紹了Vue Element Ui 樹形表懶加載新增、修改、刪除等操作后局部數(shù)據(jù)更新的詳細代碼,感興趣的朋友跟隨小編一起看看吧2022-09-09

