目前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

你得支持是我最大的动力

如需帮助就扫一下啦

【nuxtjs 指南】解决nuxtjs本地开发跨域和防止路由与api冲突问题相关推荐

  1. nuxt.js 本地开发跨域问题(Access-Control-Allow-Origin)及其解决方案

    问题描述 现在 web 开发都是前后端分离的年代,前后端分离的好处我就不啰嗦了,进入问题 ==>>> 使用 nuxt.js 本地开发 Vue 项目时,ajax 请求时可能会遇到跨域问 ...

  2. vue加跨域代理静态文件404_解决vue本地环境跨域请求正常,版本打包后跨域代理不起作用,请求不到数据的方法——针对vue2.0...

    问题:在本地使用了proxyTable代理可以正常跨域请求后台数据,打包上传后就无法获得后台的json文件.查看了相关资料可以用nginx进行解决.还可以使用命名环境变量,请求的时候进行判断,话不多说 ...

  3. vue : 本地调试跨域问题的解决办法:proxyTable

    vue : 本地调试跨域问题的解决办法:proxyTable 参考文章: (1)vue : 本地调试跨域问题的解决办法:proxyTable (2)https://www.cnblogs.com/fo ...

  4. 解决Vue前后端跨域问题的多种方式

    1 前言 本文主要介绍借助解决Vue前后端跨域问题的几种方式 说到ajax请求,就不得不说下xhr(XMLHttpRequest)了,它可以说是鼻祖,但是实际开发中,我们不会直接使用它,而是进行二次封 ...

  5. 解决前端 node 环境跨域与404问题,yog2

    问题背景: 前端通常会有两种架构,一种是无前后端分离的,前端为后端提供渲染模板,这种方式把前后端开发人员绑定到了一起,很不灵活:另一种是前后端分离,也是目前大多数公司在走的路线,通常会使用 node ...

  6. axios请求跨域前端解决_Vue中axios跨域请求解决方法

    跨域:指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制. 所谓同源是指,域名,协议,端口均相同,浏览器执行 js 脚本时,会检查这个脚本属 ...

  7. 用P3P header解决IE下iframe跨域访问时候session丢失的问题

    用P3P header解决IE下iframe跨域访问时候session丢失的问题 整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会sess ...

  8. 解决Canvas.toDataURL 图片跨域问题

    解决Canvas.toDataURL 图片跨域问题 参考文章: (1)解决Canvas.toDataURL 图片跨域问题 (2)https://www.cnblogs.com/ajg016/p/547 ...

  9. 解决阿里云OSS跨域问题

    解决阿里云OSS跨域问题 现象 本人项目中对阿里云图片请求进行了两次,第一次通过img标签进行,第二次通过异步加载获取.第一次请求到图片,浏览器会进行缓存,随后再进行异步请求,保存跨域失效. 错误信息 ...

最新文章

  1. Spring Security 实战干货:从零手写一个验证码登录
  2. python 批量下载文件
  3. 什么决定了程序员的价格,程序员该如何溢价
  4. (二)python3 只需3小时带你轻松入门——基本变量
  5. js值的拷贝和值的引用_到达P值的底部:直观的解释
  6. 二代CMS旅游网站程序国际版开发中(支持英文、法文等),支持拓展语言包
  7. 五个案例简述Web设计原则:通用一致
  8. IE8 打开网站首页显示的却是手机网站
  9. 特别引人注目的头像_设计样式指南:构建引人注目的产品的要素
  10. 语言孪生素数问题_刘建亚教授讲述“素数的故事”
  11. 自然语言项目之Python语种检测代码实现
  12. 应用ajax实现检测注册用户名是否已经存在
  13. 【Spring】Service 注入失败,空指针
  14. Matlab读取显示图像顺序
  15. 软件工程学习笔记(二)~软件需求说明书
  16. 计算机性能怎么测试软件,如何测试电脑性能|检测电脑性能的方法
  17. 成分句法分析依存文法分析
  18. vue 运行启动命令_如何使用Vue启动和运行
  19. ceph rbd mysql_Ceph 实战之 RBD
  20. 裴建瑞2021011195

热门文章

  1. W4_python_decorator_generator_Iteratable_Iterator_json_pickle
  2. Yii2 mongodb 扩展的where的条件增加大于 小于号
  3. VA Code编写html(1)
  4. 全国计算机等级考试题库二级C操作题100套(第15套)
  5. c语言基础回顾 —— 其他知识点
  6. 下列属于计算机人工智能应用领域的是多选题,每天五道选择题(10)
  7. 深度相机 物体三维重建_基于深度相机进行室内完整场景三维重建的方法及系统_2017100513665_说明书_专利查询_专利网_钻瓜专利网...
  8. sql实现like多个值的查询
  9. Java 泛形通配符 ?
  10. 电脑知识:分享几款常用的截屏方法,欢迎收藏!