欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何使用proxytable配置解決vue-cli的跨域請求問題-創(chuàng)新互聯(lián)

小編給大家分享一下如何使用proxytable配置解決vue-cli的跨域請求問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,成都做網(wǎng)站、網(wǎng)站建設(shè),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。

本文適用人群:

  • 會使用 vue-cli 搭建一個基本的 vue webpack 項目,本文的目錄結(jié)構(gòu)基于 webpack 模板結(jié)構(gòu)

  • 懂得 axios 基本用法

問題導(dǎo)向

日常開發(fā)中,前端經(jīng)常需要通過 ajax 從后端獲取數(shù)據(jù)。而在這種前后端分離的開發(fā)模式下,往往前端項目與后端項目的 IP地址、端口號、協(xié)議 大概率是不一樣的,由于瀏覽器的安全策略設(shè)定,不進(jìn)行相應(yīng)配置的話,前端的請求就會被瀏覽器攔截掉啦。

假設(shè)某個頁面組件在加載的時候會向后端發(fā)送一個請求,然后根據(jù)返回的結(jié)果來渲染頁面。代碼示例如下:

前端項目通過 npm run dev 運行在 localhost:8081 上,

后端項目通過 apache 運行在 localhost/test/public/api/books

<template>
 <div class="hello">
 <ul>
  <li v-for="book of books">{{book.name}}</li>
 </ul>
 </div>
</template>
<script>
 import axios from 'axios';
 export default {
 name: 'HelloWorld',
 data() {
  return {
  books: []
  }
 },
 created(){
  let self = this;
  axios.get("http://localhost/test/public/api/books")
  .then((response)=>{
  self.books = response.data;
  });
 }
 }
</script>

直接訪問后端鏈接,將能得到以下返回內(nèi)容:

[
 {"name":"javascript \u4ece\u5165\u95e8\u5230\u653e\u5f03"},
 {"name":"\u9888\u690e\u75c5\u5eb7\u590d\u6307\u5357"},
 {"name":"\u89c6\u529b\u4fdd\u62a4\u6307\u5357"}
]

但是當(dāng)我們在瀏覽器中運行前端頁面,會報錯!控制臺打印如下:

如何使用proxytable配置解決vue-cli的跨域請求問題 

可見,瀏覽器對于跨域訪問進(jìn)行了限制,因為在例子中前端項目url與后端項目url的端口號不相同,所以瀏覽器攔截了我們的請求。

解決方案

解決方式有很多種,包括可以很簡單粗暴地讓后端代碼設(shè)置一個 Access-Control-Allow-Origin 頭來解決這個問題。但是,在實際開發(fā)中,后端的小哥哥們才不會理會你這個羞恥的小請求呢~

那怎么辦咧~

其實我們可以通過配置 vue 項目中的 config/index.js 來解決問題。

將 dev 中的 proxyTable 改為如下:

proxyTable: {
 '/api': {
 target: 'http://localhost/test/public/api/',
 changeOrigin: true,
 pathRewrite: {
  '^/api': ''
 }
 }
},

接著,再將 vue 組件頁面中的 ajax 請求代碼改為如下:

// 改為這樣,原來是這樣:axios.get("http://localhost/test/public/api/books")
axios.get("/api/books")

重新運行 npm run dev ,運行效果如下:

如何使用proxytable配置解決vue-cli的跨域請求問題

當(dāng)當(dāng)當(dāng)!成功!

為什么這么做?

當(dāng)我們打開瀏覽器的開發(fā)者工具查看一下網(wǎng)絡(luò)請求就會發(fā)現(xiàn),這個 ajax 請求竟然是向我們前端的 webpack-dev-server 發(fā)送的:

如何使用proxytable配置解決vue-cli的跨域請求問題

而且居然能返回正確的數(shù)據(jù)???

瀏覽器有安全策略限制,但是第三方的服務(wù)(服務(wù)器)沒有呀,所以我們可以通過讓瀏覽器訪問前端開發(fā)服務(wù)器的url,讓前端開發(fā)服務(wù)器去向后端服務(wù)器發(fā)送請求,再返回數(shù)據(jù)給瀏覽器,這樣子就不存在跨域問題啦。

如何使用proxytable配置解決vue-cli的跨域請求問題

當(dāng)我們在配置中這么寫時:

proxyTable: {
 '/api': {
 target: 'http://localhost/test/public/api/',
 }
},

對于8081端口的開發(fā)服務(wù)器而言,所有以 /api 開頭的 uri 都會被轉(zhuǎn)發(fā)到 http://localhost/test/public/api/ ,

也就是說,在瀏覽器中訪問 localhost:8081/api/books ,前端開發(fā)服務(wù)器就會向 http://localhost/test/public/api/api/books 請求數(shù)據(jù)。就是簡單粗暴地在 target 之后拼接上當(dāng)前的uri。

會發(fā)現(xiàn)這樣子做,實際的 url 中多了一個 /api ,不滿足我們的需求,所以可以通過 pathRewrite 將這幾個字符串替換掉。

// 將 "/api" 開頭的 url 中的 "api" 替換成 空
proxyTable: {
 '/api': {
 target: 'http://localhost/test/public/api/',
 pathRewrite: {
  '^/api': ''
 }
 }
},
// 根據(jù)上面的規(guī)則
// 當(dāng)在瀏覽器訪問 localhost:8081/api/books
// 則實際訪問的是 http://localhost/test/public/api/books
// 假設(shè)設(shè)置成 
pathRewrite: {'^/api': '/somethingnew'}
// 當(dāng)在瀏覽器訪問 localhost:8081/api/books
// 則實際訪問的是 http://localhost/test/public/somethingnew/books

而配置項 changeOrigin: true 則是設(shè)置了前端開發(fā)服務(wù)器向后端發(fā)送請求時 HTTP 包中的 HOST 字段。當(dāng)設(shè)置為 true 時,HOST 會被設(shè)置成目標(biāo)地址(target)中的主機(jī)。當(dāng)后端服務(wù)器是虛擬主機(jī)時,這個選項顯得尤為重要,或者說,同一個IP綁定了多個服務(wù)器服務(wù)時顯得尤為重要。不設(shè)置的話,可能會導(dǎo)致請求不到數(shù)據(jù)。

如何使用proxytable配置解決vue-cli的跨域請求問題

以上是“如何使用proxytable配置解決vue-cli的跨域請求問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

標(biāo)題名稱:如何使用proxytable配置解決vue-cli的跨域請求問題-創(chuàng)新互聯(lián)
當(dāng)前地址:http://aaarwkj.com/article10/iegdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、全網(wǎng)營銷推廣動態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計微信公眾號、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
变态另类欧美国产在线| 亚洲天堂欧美日韩一区| 一区二区三区欧美影片| 日韩中文字幕久久中文字幕| 国产欧美日韩经典一区| 一区二区三区深夜福利| 亚洲国产精品一区二区首页| 好狼色欧美激情国产区| 国语少妇高潮对白在线| 伊人久久大香线蕉av色婷婷色| 白小白的视频在线观看| 97超频在线观看免费| 免费国产三级在线观看| 久章草在线免费视频播放| 97国产免费全部免费观看| 人人妻人人澡人人爽人人精品| 大屁股白浆一区二区三区| 欧美精品黄片免费在线观看| 日韩综合欧美激情另类| 日韩精品第一区第二区| 蜜臀综合亚洲国产精品| 国产深夜福利在线观看| 丰满人妻一区二区三区免费| 蜜桃视频中文字幕二区三区| 亚洲中文字幕婷婷在线| 国产亚洲精品女人久久久| 欧美日本国产专区一区| 久久人体午夜激情视频| 国产一区二区伦理视频| 亚洲亚洲精品av在线动| 国产免费一级av剧情| 亚洲国产精品中文字幕一区久久| 91色综合久久久久婷婷| 日本美女午夜福利视频| 性生活真实视频免费看| 天堂在线av免费观看| 欧美福利免费在线视频| 国产欧美亚洲精品一区二区| 日本97久久久久久精品| 色哟哟网站一区二区精品久久| 99久久精品国产国产毛片|