vue中解決跨域的常見方案分享(建議收藏)
一、開發(fā)環(huán)境解決跨域方法
平時使用vue開發(fā)的時候,大多會使用vue-cli搭建項目,在vue-cli搭建的項目中有一個配置文件vue.config.js,可以在該文件中進行相應的配置解決開發(fā)環(huán)境的跨域問題。
第一步設置公共url : api/index.js
import axios from 'axios'
import router from '@/router/index.js'
import store from '@/store/index.js'
// 創(chuàng)建一個axios實例
var instance = axios.create({
baseURL: "/api",
})
// 請求攔截器
instance.interceptors.request.use(function (config) {
config.headers['E_Token'] = store.state.user.E_Token;
return config;
}, function (error) {
// 對請求錯誤做些什么
return Promise.reject(error);
})
// 響應攔截
instance.interceptors.response.use(function (config) {
if(config.data.retCode !=0){
// 處理后臺異常
return false;
}
return config;
}, function (error) {
return Promise.reject(error)
})
export default function (method, url, data = null) {
method = method.toLowerCase();
if (method == 'post') {
return instance.post(url, data)
} else if (method == 'get') {
return instance.get(url, data)
} else if (method == 'delete') {
return instance.delete(url, data)
} else if (method == 'put') {
return instance.put(url, data)
} else {
console.error('未知的method' + method)
return false
}
}api/modules/pagesApi.js
import req from '../index'
//用戶注冊接口
export const register =(params)=>{
return req("post", '/user/register', params)
}
//用戶登錄接口
export const login =(params)=>{
return req("post", '/user/login', params)
}
//Model列表及分頁
export const getFormList =(params)=>{
return req("post", '/model/getFormList', params)
}
//查看詳情
export const queryModel =(params)=>{
return req("get", '/model/queryModel/'+params.id,{
})
}
//Model刪除接口
export const deleteModel =(params)=>{
return req("delete", '/model/deleteModel/'+params.id,{
})
}
//Model新增
export const insertModel =(params)=>{
return req("post", '/model/insertModel', params)
}通過攔截器我們可以更加容易的與后臺進行交互,同時簡潔了代碼,使得管理更加容易,我們創(chuàng)建攔截器的時候可以指定baseUrl,這里我指定的是**”/api”,因為接下來我們需要對“/api”進行攔截配置,目的是凡是以“/api”開頭的請求url都會將url中的“/api”**的前面添加上我們指定的內(nèi)容。 例如:
'/api/user/login' 替換成 'http://119.20.224.137:8201/api/user/login'
vue.config.js
devServer: {
// 1.指定服務的ip
host: "192.168.0.128",
// 2.指定服務的端口
port: 3000,
open: true,
overlay: {
warnings: false,
errors: true
},
// 3.開發(fā)環(huán)境進行http的代理
proxy: {
// 匹配 url 路徑的開頭
'/api': {
// 1.路勁只要是/api開頭的url都代理到下面這個網(wǎng)站。
// 例如:'/api/xxxx' 會代理到 https://119.20.224.137/api/xxxx
target: 'http://119.20.224.137:8201',
changeOrigin: true,
pathRewrite: { '^/api': '/api/' }
}
}
},二、生產(chǎn)環(huán)境解決跨域方法
配置nginx代理
使用nginx反向代理,在配置文件nginx.conf中找到server{}對象,更改項目地址root和配置代理地址proxy_pass,這個方法適合前端靜態(tài)文件使用:
location / {
root D:/browseClient/dist; #自己的前端項目地址
index index.html index.htm;
}
#解決跨域
location /api {
# 自定義nginx接口前綴
proxy_pass http://127.0.0.1:3000; # 后臺api接口地址
proxy_redirect default;
#設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}三、后端處理
response.setHeader("Access-Control-Allow-Origin", "*");//* or origin as u prefer
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "PUT, POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "content-type, authorization");到此這篇關(guān)于vue中解決跨域的常見方案分享(建議收藏)的文章就介紹到這了,更多相關(guān)vue跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3之路由的query參數(shù)和params參數(shù)用法
這篇文章主要介紹了Vue3之路由的query參數(shù)和params參數(shù)用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
vue.js根據(jù)代碼運行環(huán)境選擇baseurl的方法
本篇文章主要介紹了vue.js根據(jù)代碼運行環(huán)境選擇baseurl的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
Vue3 Element Plus el-tabs數(shù)據(jù)刷新實現(xiàn)方式
這篇文章主要介紹了Vue3 Element Plus el-tabs數(shù)據(jù)刷新實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-07-07
關(guān)于element-ui表單中限制輸入純數(shù)字的解決方式
這篇文章主要介紹了關(guān)于element-ui表單中限制輸入純數(shù)字的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Vue和SpringBoot之間傳遞時間的方法實現(xiàn)
本文主要介紹了Vue和SpringBoot之間傳遞時間的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
使用Vue+Element UI實現(xiàn)復選框刪除線效果
在開發(fā)報告生成、配置選擇等功能時,我們經(jīng)常需要讓用戶選擇包含哪些內(nèi)容,一個好的UI設計應該讓用戶清晰地看到哪些選項被選中,哪些被排除,本文將介紹如何使用Vue + Element UI實現(xiàn)一個優(yōu)雅的復選框刪除線效果,需要的朋友可以參考下2026-01-01

