vue 處理跨域問題及解決方法小結(jié)
當(dāng)你在發(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),它是瀏覽器最核心也是最基本的功能,如果沒有同源策略我們的瀏覽器將會十分的不安全,隨時都可能受到攻擊。
當(dāng),協(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 當(dāng)你在請求數(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)文章
Vue2實現(xiàn)自適應(yīng)屏幕大小的兩種方法詳解
這篇文章主要為大家詳細介紹了Vue2實現(xiàn)自適應(yīng)屏幕大小的兩種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03vue2實現(xiàn)可復(fù)用的輪播圖carousel組件詳解
這篇文章主要為大家詳細介紹了vue2實現(xiàn)可復(fù)用的輪播圖carousel組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11elementUI樣式修改未生效問題詳解(掛載到了body標(biāo)簽上)
vue+elementUI項目開發(fā)中,經(jīng)常遇到修改elementUI組件樣式無效的問題,這篇文章主要給大家介紹了關(guān)于elementUI樣式修改未生效問題的相關(guān)資料,掛載到了body標(biāo)簽上,需要的朋友可以參考下2023-04-04