摘要:我們將引入我們配置的中,再將修改如下路徑你們改下將印射為接口域名如果是接口,需要配置這個(gè)參數(shù)是否跨域需要的之后不管是生產(chǎn)環(huán)境,還是開發(fā)環(huán)境,都不用再修改我們的請求地址了。
前言
我們在使用vue-cli啟動(dòng)項(xiàng)目的時(shí)候npm run dev便可以啟動(dòng)我們的項(xiàng)目了,通常我們的請求地址是以localhost:8080來請求接口數(shù)據(jù)的,localhost是沒有辦法設(shè)置cookie的。
我們可以在vue-cli配置文件里面設(shè)置一個(gè)代理,跨域的方法有很多,通常需要后臺(tái)來進(jìn)行配置。我們可以直接通過node.js代理服務(wù)器來實(shí)現(xiàn)跨域請求。
vue proxyTable接口跨域請求調(diào)試在vue-cli項(xiàng)目中的config文件夾下的index.js配置文件中,dev長這樣子:
dev: { env: require("./dev.env"), port: 8080, autoOpenBrowser: true, assetsSubDirectory: "static", assetsPublicPath: "/", proxyTable: {}, cssSourceMap: false }
服務(wù)器提供的接口如果長這樣https://www.exaple.com/server_new/login,我們把域名提取出來如https://www.exaple.com;
在config中新建一個(gè)文件命名為proxyConfig.js :
module.exports = { proxy: { "/apis": { //將www.exaple.com印射為/apis target: "https://www.exaple.com", // 接口域名 secure: false, // 如果是https接口,需要配置這個(gè)參數(shù) changeOrigin: true, //是否跨域 pathRewrite: { "^/apis": "" //需要rewrite的, } } } }
如果本身的接口地址就有 "/api" 這種通用前綴,也就是說https://www.exaple.com/api,就可以把 pathRewrite 刪掉。
config文件夾下的index.js引入proxyConfig.js:
var proxyConfig = require("./proxyConfig")
config文件夾下的index.js中的dev改成:
dev: { env: require("./dev.env"), port: 8080, autoOpenBrowser: true, assetsSubDirectory: "static", assetsPublicPath: "/", proxyTable: proxyConfig.proxy, cssSourceMap: false }
重啟項(xiàng)目npm run dev:
你會(huì)發(fā)現(xiàn)出現(xiàn)了這個(gè)
這個(gè)時(shí)候我們已經(jīng)設(shè)置好了本地API代理了
修改本地hosts文件window文件路徑一般是C:WindowSystem32driversetc,mac則直接前往文件夾/etc/hosts,打開hosts文件,在這一段下面把localhost設(shè)置進(jìn)去
# localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 127.0.0.1 activate.adobe.com 127.0.0.1 practivate.adobe.com 127.0.0.1 lmlicenses.wip4.adobe.com 127.0.0.1 lm.licenses.adobe.com 127.0.0.1 na1r.services.adobe.com 127.0.0.1 hlrcv.stage.adobe.com localhost www.exaple.com搞定
此時(shí)我們已經(jīng)完全解決了跨域問題,以及本地測試后臺(tái)無法向我們本地環(huán)境設(shè)置cookie的情況了。
補(bǔ)充這個(gè)文章發(fā)布很久了,很多人私信我問我開發(fā)地址是什么,上線地址是什么。
在這里進(jìn)行一下補(bǔ)充,教大家一個(gè)一勞永逸的方法;
寫一個(gè)config.js文件,作為項(xiàng)目地址的配置。
如下:
//項(xiàng)目域名地址 const url = "https://exaple.com"; let ROOT; //由于封裝的axios請求中,會(huì)將ROOT打包進(jìn)去,為了方便之后不再更改,判斷了當(dāng)前環(huán)境,而生成的不同的ROOT if (process.env.NODE_ENV === "development") { //開發(fā)環(huán)境下的代理地址,解決本地跨域跨域,配置在config目錄下的index.js dev.proxyTable中 ROOT = "/apis" } else { //生產(chǎn)環(huán)境下的地址 ROOT = url; } exports.PROXYROOT = url; //代理指向地址 exports.ROOT = ROOT;
這里暴露出去了兩個(gè)接口,一個(gè)作為代理指向地址,也就是真正的請求地址,一個(gè)則為我們的ajax請求的地址。
我們將ROOT引入我們配置的ajax中,再將proxyConfig.js修改如下:
const config = require("../src/fetch/config"); //路徑你們改下 module.exports = { proxy: { [config.ROOT]: { //將www.exaple.com印射為/apis target: config.PROXYROOT,, // 接口域名 secure: false, // 如果是https接口,需要配置這個(gè)參數(shù) changeOrigin: true, //是否跨域 pathRewrite: { [`^${config.ROOT}`]: "" //需要rewrite的 } } } }
之后不管是生產(chǎn)環(huán)境,還是開發(fā)環(huán)境,都不用再修改我們的請求地址了。
寫的比較潦草,沒有整理思路,總結(jié)一下。
也就是說,之前我們的方法,在npm run dev的時(shí)候,ajax請求接口地址需要帶上/apis,而如果我們在npm run build的時(shí)候,則需要將ajax接口地址改為真正的地址www.exaple.com,這樣極其不方便,每次都要改。那我們便通過process.env.NODE_ENV來判斷環(huán)境,從而導(dǎo)出不一樣的接口。
好了,如果有小伙伴不太清楚的,私信我我重新整理一下當(dāng)前教程,如果都能看懂我補(bǔ)充的,就不改啦哈哈
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85227.html
摘要:由兩部分組成回調(diào)函數(shù)和數(shù)據(jù)。回調(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁面中調(diào)用的函數(shù)。回調(diào)函數(shù)的名字一般是在請求中指定的。動(dòng)態(tài)創(chuàng)建標(biāo)簽,設(shè)置其,回調(diào)函數(shù)在中設(shè)置在頁面中,返回的作為參數(shù)傳入回調(diào)函數(shù)中,我們通過回調(diào)函數(shù)來來操作數(shù)據(jù)。 什么是跨域? 同源策略規(guī)定了如果兩個(gè) url 的協(xié)議、域名、端口中有任何一個(gè)不等,就認(rèn)定它們跨源了。 跨域的解決方式有哪幾種? 1.JSONP 是 JSON with ...
摘要:由兩部分組成回調(diào)函數(shù)和數(shù)據(jù)。回調(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁面中調(diào)用的函數(shù)。回調(diào)函數(shù)的名字一般是在請求中指定的。動(dòng)態(tài)創(chuàng)建標(biāo)簽,設(shè)置其,回調(diào)函數(shù)在中設(shè)置在頁面中,返回的作為參數(shù)傳入回調(diào)函數(shù)中,我們通過回調(diào)函數(shù)來來操作數(shù)據(jù)。 什么是跨域? 同源策略規(guī)定了如果兩個(gè) url 的協(xié)議、域名、端口中有任何一個(gè)不等,就認(rèn)定它們跨源了。 跨域的解決方式有哪幾種? 1.JSONP 是 JSON with ...
摘要:跨域總結(jié)跨域思路跨域解決方案一般分為兩種前端解決,后端解決前端解決方案通過前端解決的思想就是,通過設(shè)置中間件把跨域的請求轉(zhuǎn)發(fā)一下,其實(shí)就是反向代理,比如想要訪問豆瓣的接口很,但是如果請求的是就不存在跨域反向代理就是截取之后重寫請求將請求轉(zhuǎn)發(fā) 跨域總結(jié) 1.跨域思路 跨域解決方案一般分為兩種:前端解決,后端解決 1.1 前端解決方案 通過前端解決的思想就是,通過設(shè)置中間件把跨域的請求轉(zhuǎn)發(fā)...
摘要:本文將針對(duì)使用生態(tài)開發(fā)完成的網(wǎng)站,以版本為基礎(chǔ)兼容目標(biāo),實(shí)現(xiàn)全功能正常使用的全面兼容解決方案。這樣做的目的,是逐步減少全局性方法,使得語言逐步模塊化。此外,使用這個(gè),一旦頁面不處于瀏覽器的當(dāng)前標(biāo)簽,就會(huì)自動(dòng)停止刷新。 前言 背景情況 vue - 2.5.11 vue-cli 使用模板 webpack-simple http請求:axios Vue 官方對(duì)于 ie 瀏覽器版本兼容情...
閱讀 2993·2021-10-12 10:17
閱讀 1596·2021-09-01 11:38
閱讀 1087·2019-08-30 15:44
閱讀 3485·2019-08-26 18:36
閱讀 515·2019-08-26 13:25
閱讀 1890·2019-08-26 10:29
閱讀 2841·2019-08-23 15:58
閱讀 765·2019-08-23 12:59