【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.mzph.cn/news/280731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF效果第二百零五篇之自定义导航控件

前面摸索了一下会简单玩耍自定义控件了;今天再次分享一下N年前想要在GIS实现的一个导航控件;来看看最终实现的效果:1、先来看看前台xaml布局:2、后台路由事件就参照上一篇快捷方式3、关键依赖属性的回调触发路由事件:4、内部Arc的MouseDown事件触发路由事件:private void Arc_M…

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 轻量目…

Hive学习之路 (一)Hive初识

Hive 简介 什么是Hive 1、Hive 由 Facebook 实现并开源 2、是基于 Hadoop 的一个数据仓库工具 3、可以将结构化的数据映射为一张数据库表 4、并提供 HQL(Hive SQL)查询功能 5、底层数据是存储在 HDFS 上 6、Hive的本质是将 SQL 语句转换为 MapReduce 任务运行 7、使不熟悉 MapR…

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…

旗正规则引擎内存表出错的原因及解决方法

经常我们有一些使用者问到这个问题,关于内存表出错的情况,其实问题不复杂,我这给大家简单的讲一下就明白了,如果还有什么不明白的,其实也都可以问厂家杭州旗正,随时都有人回应的。 1 内存表 1.1 汇总 1.1.1…

Shell脚本之sed的使用

1.sed命令;主要作用是查找;新增 删除 和修改替换。 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 查找命令:-n 和 p(prin…

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

国内文章.NET 7 的 AOT 到底能不能扛反编译?https://www.cnblogs.com/huangxincheng/p/16917197.html在 B 站,公众号上发了一篇 AOT 的文章后,没想到反响还是挺大的,都称赞这个东西能抗反编译,可以让破解难度极大提高&…

HDU 5673 Robot 卡特兰数

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid5673 题目描述: 一个人从原点开始向右走, 要求N秒后回到原点, 且过程中不能到负半轴, 人有两种操作, 走动或者停止, 问总共有多少种方案&…

删除本地账户无法登录电脑_如何从Windows的登录屏幕中删除本地用户帐户

删除本地账户无法登录电脑If you have multiple user accounts on your computer, you might find it annoying to have to click on the icon for your username each time you start up the computer. To remedy this problem, you can hide a user account with a registry …

tarjan算法详解

https://blog.csdn.net/jeryjeryjery/article/details/52829142?locationNum4&fps1 以防链接失效,特此转载此博,如有侵权请见谅 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向…

Gitlab简单使用CI/CD

开篇语大概是去年就想做这个事情了,奈何当时卡到一个docker命令找不到的问题上,导致文章难产了,墨迹了这么久,终于又有空来捣鼓它了。目的我们要实现的目的是我本地不断提交代码(CI),然后服务器不断进行部署(CD)的一个简单流程。准…

免费的数字图书馆_不仅是书籍:您当地图书馆可能提供的所有免费数字资料

免费的数字图书馆You might think of libraries as old fashioned, or irrelevant in the age of the internet. You’d be wrong. 您可能会认为图书馆是老式的,或者与互联网时代无关。 你会错的。 Modern libraries offer books, yes, but they also provide inter…

iNeuOS工业互联网操作系统,脚本化实现设备运行时长和效率计算与统计

目 录1. 概述... 22. 实时采集开停状态... 23. 增加虚拟设备... 24. 脚本统计和计算设备运行时长... 45. 设备运行时长报表... 71. 概述有一个煤矿项目,使用iNeuOS系统时有一个需要是:要统计设备的运行时长&#xff0c…

C# 图片、文件等加入Project Resources

一、目的 1.编译后,只想有一个exe文件,不想外部文件引用,直接运行exe文件即可。 2.不会出现文件丢失情况。 二、操作 1.右击project ->properties->Resource,左上角选择Image(或其他类型) 2. 点击…

jfinal使用shiro注解大体流程

2019独角兽企业重金招聘Python工程师标准>>> 上一篇答题梳理了jfinal整合shiro的流程,jfinal读取shiro注解,这一篇将作为补充。 1.JFinalShiroPlugin作者为shiro的RequiresRoles,RequiresPermissions, RequiresAuthent…

chrome 快捷键取消_如何使用键盘快捷键在Chrome和Firefox中固定和取消固定选项卡...

chrome 快捷键取消If you tend to open a lot of tabs in your browser, it can become difficult to find the tabs with your most used websites. Pinning tabs in your browser moves those tabs to the left and shrinks the tabs to only show the favicon, and you can …

.NET Conf China 2022参会指南速览(内含超多福利)赶紧预约!⏰⏰⏰

12月充满惊喜各种美好节日纷至沓来似在奖励一年辛苦劳作的你12月的第一波福利.NET Conf China 承包啦立即扫码预约加入.NET年度盛宴抢12月第一波惊喜!.NET Conf China 2022 .NET Conf China 2022是面向开发人员的社区峰会,延续 .NET Conf 2022 的活动&a…