【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…

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和…