亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

使用proxytable 配置解決 vue-cli 的跨域請求問題【推薦】

2019-11-19 13:46:18
字體:
來源:轉載
供稿:網友

本文適用人群:

  • 會使用 vue-cli 搭建一個基本的 vue webpack 項目,本文的目錄結構基于 webpack 模板結構
  • 懂得 axios 基本用法

問題導向

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

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

前端項目通過 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>

直接訪問后端鏈接,將能得到以下返回內容:

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

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

 

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

解決方案

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

那怎么辦咧~

其實我們可以通過配置 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 ,運行效果如下:

 

當當當!成功!

為什么這么做?

當我們打開瀏覽器的開發者工具查看一下網絡請求就會發現,這個 ajax 請求竟然是向我們前端的 webpack-dev-server 發送的:

 

而且居然能返回正確的數據???

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

 

當我們在配置中這么寫時:

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

對于8081端口的開發服務器而言,所有以 /api 開頭的 uri 都會被轉發到 http://localhost/test/public/api/ ,

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

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

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

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

更多的 proxyTable 可用參數可以參考 http-proxy-middleware 的文檔

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大肥婆大肥bbbbb| 狠狠色狠狠色综合日日五| 丝袜情趣国产精品| 亚洲欧美国产va在线影院| 成人www视频在线观看| 国产精品成av人在线视午夜片| 午夜精品蜜臀一区二区三区免费| 亚洲成人激情图| 国产精品福利在线观看网址| 亚洲女人天堂成人av在线| 日韩高清a**址| 久热爱精品视频线路一| 国产日韩欧美在线观看| 久久免费视频在线观看| 久久国产精彩视频| 中文字幕亚洲国产| 欧美激情视频在线| 国产精品va在线播放| 亚洲人成网站999久久久综合| 欧美激情中文字幕乱码免费| 亚洲男人7777| 成人性生交xxxxx网站| 欧美成人精品影院| 在线播放国产一区二区三区| 91禁外国网站| 亚洲精品免费网站| 成人免费xxxxx在线观看| 色综合久久中文字幕综合网小说| 国产精品视频导航| 最近2019年好看中文字幕视频| 国产精品自产拍在线观| 97在线视频免费观看| 欧美日韩午夜剧场| 色综合天天狠天天透天天伊人| 欧美大奶子在线| 日韩精品视频在线播放| 欧美在线视频在线播放完整版免费观看| 成人久久18免费网站图片| 亚洲色图15p| 亚洲欧洲一区二区三区久久| 亚洲视频在线观看免费| 成人在线小视频| 亚洲一区二区三区视频| 成人精品在线观看| 欧美国产亚洲精品久久久8v| 日韩黄在线观看| 97国产精品人人爽人人做| 国产欧美日韩最新| 精品偷拍一区二区三区在线看| 91精品国产91久久久久久最新| 亚洲男人7777| 亚洲精品狠狠操| 国产亚洲人成a一在线v站| 国产精品久久久久久久9999| 另类专区欧美制服同性| 国外视频精品毛片| 伊人亚洲福利一区二区三区| 国产亚洲人成a一在线v站| 在线电影av不卡网址| 欧美日韩国产第一页| 亚洲国产天堂久久国产91| 国产亚洲精品91在线| 欧美一性一乱一交一视频| 懂色av影视一区二区三区| 黑人巨大精品欧美一区免费视频| 国产亚洲精品美女久久久| 久久久日本电影| 欧美一级电影久久| 国产中文欧美精品| 日韩精品视频在线| 91精品视频在线播放| 欧美国产日韩xxxxx| 欧美成人性色生活仑片| 一本色道久久综合狠狠躁篇的优点| 日韩高清电影免费观看完整| 日日狠狠久久偷偷四色综合免费| 久久99视频精品| 欧美黄色成人网| 亚洲成人av在线| 伊人男人综合视频网| 中文字幕视频在线免费欧美日韩综合在线看| 成人免费网站在线| 亚洲男人天堂2024| 国产欧美日韩精品专区| 国产精品三级久久久久久电影| 性欧美xxxx交| 精品久久久久久国产91| 欧美影院成年免费版| 岛国av午夜精品| 黑人欧美xxxx| 精品亚洲国产视频| 国产精品亚洲综合天堂夜夜| 国产精品成人av性教育| 97久久精品视频| 国产精品视频午夜| 色悠久久久久综合先锋影音下载| 精品久久久久久电影| 久久久久久亚洲精品中文字幕| 最近2019中文字幕在线高清| 亚洲第一偷拍网| 自拍偷拍亚洲一区| 国产精品电影观看| 欧美日韩国产精品一区二区三区四区| 自拍偷拍免费精品| 日韩视频免费大全中文字幕| 97av在线播放| 秋霞成人午夜鲁丝一区二区三区| 欧美一区二区.| 亚洲香蕉av在线一区二区三区| 91久久国产综合久久91精品网站| 欧美激情精品久久久久久变态| 精品国产欧美成人夜夜嗨| 国产精品精品视频| 欧美成人亚洲成人| 久久久久久久久久久亚洲| 亚洲精品国产精品国自产观看浪潮| 久久91精品国产91久久久| 日韩经典一区二区三区| 精品国偷自产在线视频| 日韩免费av片在线观看| 欧美性xxxx在线播放| 九九精品视频在线| 成年无码av片在线| 毛片精品免费在线观看| 日韩中文字幕av| 国产日韩精品在线| 久久免费成人精品视频| 久久久久免费精品国产| 久久精品一区中文字幕| 亚洲人成伊人成综合网久久久| 色系列之999| 亚洲欧美日韩在线高清直播| 亚洲欧洲高清在线| 久久精品2019中文字幕| 久久久久久久久国产精品| 国产精品网站入口| 国产999精品视频| 78m国产成人精品视频| 91久久在线播放| 1769国内精品视频在线播放| 韩国三级日本三级少妇99| 亚洲无亚洲人成网站77777| 国产视频自拍一区| 2019中文字幕在线观看| 欧美日韩中国免费专区在线看| 国产视频久久久久久久| 一本色道久久88综合亚洲精品ⅰ| 国产xxx69麻豆国语对白| 国产精品美女主播| 欧美老妇交乱视频| 91免费国产视频| 91久久久在线| 国产欧美一区二区三区久久| zzjj国产精品一区二区| 久久久久久久999精品视频| 国产精品va在线| 亚洲美女视频网站| 国产精品久久久久久久久久东京| 91av在线精品| 欧美成人免费大片| 亚洲韩国欧洲国产日产av| 色先锋久久影院av| 欧美日韩免费一区| 亚洲丝袜在线视频|