【nuxtjs 指南】解決nuxtjs本地開發跨域和防止路由與api沖突問題

目前vue很火,大部分開發者把vue當做框架首選,然而spa是對搜素引擎很不友好,就會想到ssr,在vue社區nuxtjs完美的解決了這個問題,目前nuxt還不算太成熟,當然對于新手坑比較多,當我們確定使用了這個nuxtjs的時候,腳手架搭建好之后,就會面臨一個問題,在前后分離的情況下,端口不一致,怎么解決跨域問題呢?

在前后分離的場景下開發,經常會遇到下面場景

The 'Access-Control-Allow-Origin' header has a value 'http://xxx.com' that is not equal to the supplied origin. Origin 'http://localhost:3000' is therefore not allowed access.

在vue里面我們可以使用vue cli 自帶的 proxyTable來解決這個問題 (解決方案)
那么我們怎么在nuxtjs 能像vue這么方便的解決這個問題呢?
有些小伙伴可能會想到直接使用express 中間件,主動改變header

app.use('/', function(req, res) {const url = 'https://www.shudong.wang/api' + req.urlreq.pipe(request(url)).pipe(res.set('Access-Control-Allow-Origin', '*'))
})

這也是一種解決方案,只是不太優雅

可能我們還會遇到 api 與 路由沖突等問題

我們現在去做一個比較完美的解決方案

在axios上面配置添加前綴 api 來區分一下,是真正的路由還是api的url

在plugins文件夾里面創建文件

axios.js

import * as axios from 'axios'let options = {}
// 需要全路徑才能工作
if (process.server) {options.baseURL = `http://${process.env.HOST || 'localhost'}:${process.env.PORT || 3000}/api`
}export default axios.create(options)

這樣每次通過axios訪問api的時候都會自動在前面加上api

下面的思路是,每當檢測到路由上有/api這個字符的時候,就去給它分配到api的主機上
在實際項目中,無論使用的是koa,還是express,或其它語言的api,根據它的端口來配置

安裝@nuxtjs/axios 和 @nuxtjs/proxy 官方模塊

ad:歡迎關注訂閱號:樹東先森

安裝方式

npm i @nuxtjs/axios  @nuxtjs/proxy -D

在 nuxtjs.config.js 配置文件最后添加下面模塊,并且設置代理

  modules: ['@nuxtjs/axios','@nuxtjs/proxy'],proxy: [['/api', { target: 'http://localhost:3001', // api主機pathRewrite: { '^/api' : '/' }}]]

通過上面配置后,每次在項目中訪問通過axios訪問api的時候就會去localhost:3001主機服務去查詢
通過url訪問的時候直接由nuxtjs來處理,當然在瀏覽器上面寫api/article 也會走代理哦

axios訪問demo

 async asyncData () {let { data } = await axios.get('/article/getFrontArticleList')console.log(data)return { users: data.data }},

tip:如果本篇教程不能指導你操作,或有什么疑問請留言,如果幫助到你,請點贊收藏?

大家有什么問題可以來 http://nuxtjs.net 提問

訂閱號:樹東先森
github賬號: wsdo

你得支持是我最大的動力

如需幫助就掃一下啦
圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280731.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF效果第二百零五篇之自定義導航控件

前面摸索了一下會簡單玩耍自定義控件了;今天再次分享一下N年前想要在GIS實現的一個導航控件;來看看最終實現的效果:1、先來看看前臺xaml布局:2、后臺路由事件就參照上一篇快捷方式3、關鍵依賴屬性的回調觸發路由事件:4、內部Arc的MouseDown事件觸發路由事件:private void Arc_M…

python3用list實現棧

工作中遇到的需求,****代表標簽數據別的信息: D01  ********  1  ******** D01  ********  2  ******** D01  ********  3  ******** D01  ********  4  ******** D02  ********  1  ******** D02  ********  2  **…

powershell 腳本運行策略,參數....

1.運行策略 Powershell一般初始化情況下都會禁止腳本執行。腳本能否執行取決于Powershell的執行策略。 PS E:> Get-ExecutionPolicy Restricted PS E:> Set-ExecutionPolicy UnRestricted 2.直接運行 PS E:> "Hello,Powershell Script" > MyScript.ps…

linux每日命令(5):mkdir命令

閱讀目錄(Content)1.命令格式:2.命令功能:3.命令參數:4.命令實例:1:創建一個空目錄2:遞歸創建多個目錄3:創建權限為777的目錄4:創建新…

mac命令行將輸出寫入文件_如何在Linux中使用命令行將PDF文件轉換為可編輯文本...

mac命令行將輸出寫入文件There are various reasons why you might want to convert a PDF file to editable text. Maybe you need to revise an old document and all you have is the PDF version of it. Converting PDF files in Windows is easy, but what if you’re usi…

Windows Socket和Linux Socket編程的區別

2019獨角獸企業重金招聘Python工程師標準>>> 1、一些常用函數的移植 http://www.vckbase.com/document/viewdoc/?id1586 2、網絡 socket相關程序從Windows移植到Linux下需要注意的: 1)頭文件 Windows下winsock.h/winsock2.h Linux下sys/socket.h 錯誤處理&…

使用 C# 開發的現代輕量級 Windows 文本編輯器

你好,這里是 Dotnet 工具箱,定期分享 Dotnet 有趣,實用的工具和組件,希望對您有用!Notepads 是一個具有簡約設計的現代化輕量級文本編輯器,在 github 上開源,由微軟大佬 Jiaqi Liu 開發。開發背…

分布式壓測系列之Jmeter4.0第一季

1)Jmeter4.0介紹 jmeter是個純java編寫的開源壓測工具,apache旗下的開源軟件,一開始是設計為web測試的軟件,由于發展迅猛,現在可以壓測許多協議比如:http、https、soap、ftp、database數據庫、LDAP 輕量目…

powershell 查看系統設備\device status

查看設備 $allDevice"C:\Data\soundDevAll.txt" (Get-WmiObject -Class Win32_SoundDevice).Name|Out-File $allDevice device status $deviceInfoGet-WmiObject Win32_PnPEntity| select Name, Status | where {$_.Name -like "$deviceName"} $set…

Fish Shell 使用筆記

安裝Fish Shell brew install fish 安裝Oh My Fish curl -L https://get.oh-my.fish | fish 安裝Fisher curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish 配置 autojump clone autojump git clone https://github.com/wting/autojum…

Entity Framework Core 7中高效地進行批量數據插入

因為之前的版本中,EF Core無法實現高效地批量插入、修改、刪除數據,所以我開發了Zack.EFCore.Batch這個開源項目,比較受大家的歡迎,獲得了400多個star。從.NET 7開始,微軟在Entity Framework Core 7內置了對高效地批量…

Hive學習之路 (一)Hive初識

Hive 簡介 什么是Hive 1、Hive 由 Facebook 實現并開源 2、是基于 Hadoop 的一個數據倉庫工具 3、可以將結構化的數據映射為一張數據庫表 4、并提供 HQL(Hive SQL)查詢功能 5、底層數據是存儲在 HDFS 上 6、Hive的本質是將 SQL 語句轉換為 MapReduce 任務運行 7、使不熟悉 MapR…

angularJs select綁定的model 取不到值

內容結構 一.原因分析 二. 解決辦法 一.原因分析 1.由于原型繼承的關系,修改父級對象中的someBareValue會同時修改子對象中的值,但反之則不行。2.ng-if 以及 ng-repeat 會創建一個子級作用域,如果在這倆個指令中添加了元素&a…

PS2019攝影后期處理(三)通透....

一、PS可選顏色 在對應顏色進行cmyk加減

(原創) 今天拿到學生證了 (日記)

<原文我在2006/09/07發表在藍色小舖>今天拿到學生證了&#xff0c;終於正式成為臺大的學生。第一件事情就是去臺大圖書館借了四本書回家看&#xff0c;一次可以借兩個月耶&#xff0c;真不錯。 感覺很複雜&#xff0c;下星期要離開華碩&#xff0c;得繳回識別證&#xff…

os 鍵盤快捷鍵截圖_如何通過鍵盤快捷鍵更有效地使用OS X虛擬桌面

os 鍵盤快捷鍵截圖() We like having multiple virtual desktops on OS X, especially when we can supercharge them by combining them with a few simple keyboard shortcuts. So, on that note, here are some practical ways to use OS X’s virtual desktops like you me…

旗正規則引擎內存表出錯的原因及解決方法

經常我們有一些使用者問到這個問題&#xff0c;關于內存表出錯的情況&#xff0c;其實問題不復雜&#xff0c;我這給大家簡單的講一下就明白了&#xff0c;如果還有什么不明白的&#xff0c;其實也都可以問廠家杭州旗正&#xff0c;隨時都有人回應的。 1 內存表 1.1 匯總 1.1.1…

Shell腳本之sed的使用

1.sed命令&#xff1b;主要作用是查找&#xff1b;新增 刪除 和修改替換。 user.txt daokr#cat user.txt ID Name Sex Age 1 zhang M 19 2 wang G 20 3 cheng M 10 4 huahua M 100 查找命令&#xff1a;-n 和 p&#xff08;prin…

.NET周報【11月第4期 2022-11-30】

國內文章.NET 7 的 AOT 到底能不能扛反編譯&#xff1f;https://www.cnblogs.com/huangxincheng/p/16917197.html在 B 站&#xff0c;公眾號上發了一篇 AOT 的文章后&#xff0c;沒想到反響還是挺大的&#xff0c;都稱贊這個東西能抗反編譯&#xff0c;可以讓破解難度極大提高&…

結合hello world探討gcc編譯程序的過程

本博客&#xff08;http://blog.csdn.net/livelylittlefish&#xff09;貼出作者&#xff08;三二一小魚&#xff09;相關研究、學習內容所做的筆記&#xff0c;歡迎廣大朋友指正&#xff01; 結合"hello world"探討gcc編譯程序的過程 1. gcc簡介 gcc/g是GNU工程的C和…