新版vue-cli模板下本地开发环境使用node服务器跨域的方法


Posted in Javascript onApril 03, 2018

背景

我们都知道浏览器有一个既核心也最基本的安全功能,即同源策略。同源分别是:协议,域名,端口。如果浏览器访问服务器不同源的话,就会访问不到数据。那开发中常常访问的服务器不同源,那么可以借助一个服务器当做中介来访问需要访问的服务器从而获得数据。因为同源策略是浏览器的安全机制,而服务器之间是不受此限制的。之前vue-cli模板build文件夹下有dev-serve.js文件,可以在此文件中配置本地node服务器实现跨域,现在的模板下没有此文件,那我们该如何使用node跨域呢?不逼逼,上方法。

具体操作

1、在build文件夹下面新建一个dev-serve.js文件,其中添加代码如下:

'use strict'
const express = require('express')
const axios = require('axios')

module.exports = function () {
  let app = express()
  app.get('/api/getDiscList', (req, res) => {
    let url = '请求地址'
    axios.get(url, {
      headers: {
      //这里请求的是QQ音乐的接口,带上下面参数是为了骗服务器是自己人
        referer: 'https://c.y.qq.com/',
        host: 'c.y.qq.com'
      },
      params: req.query
    }).then((response) => {
      res.json(response.data)
    }).catch((e) => {
      console.log(e)
    })
  })

  app.listen(3000)
}

2、在build.js中引入并且运行只需要在最上面添加 require('./dev-serve.js')()

当我们npm run dev运行项目的时候,node服务器就会启动自动监听3000端口

3.本地发送ajax请求,就可以通过node服务器访问到数据,请求我使用的是axios。请求如下:

import axios from 'axios'
function getDiscList() {  

  const data = {
    //...请求参数
  }
  return axios.get('/api/getDiscList', {
    params: data
  }).then(res => {
    return Promise.resolve(res.data)
  })
}

请求到数据如下:

新版vue-cli模板下本地开发环境使用node服务器跨域的方法

新版vue-cli模板下本地开发环境使用node服务器跨域的方法

结语

如此就简单实现了本地node服务器跨域,在开发环境下是可以请求到数据,但是npm run build 打包成静态文件后就失效了。路还很长,还请各位不吝赐教。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript学习笔记6 prototype的提出
Jan 11 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
javascript静态页面传值的三种方法分享
Nov 12 Javascript
js中substring和substr的定义和用法
May 05 Javascript
JS实现双击屏幕滚动效果代码
Oct 28 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
原生JS实现几个常用DOM操作API实例
Jan 19 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
Vue通过provide inject实现组件通信
Sep 03 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 #Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 #Javascript
JavaScript同源策略和跨域访问实例详解
Apr 03 #Javascript
vue 组件中slot插口的具体用法
Apr 03 #Javascript
react 实现页面代码分割、按需加载的方法
Apr 03 #Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 #Javascript
使用FileReader API创建Vue文件阅读器组件
Apr 03 #Javascript
You might like
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
PHP面向对象详解(三)
2015/12/07 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
require.js中的define函数详解
2017/07/10 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
python实现连续图文识别
2018/12/18 Python
python print出共轭复数的方法详解
2019/06/25 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
荷叶圆圆教学反思
2014/02/01 职场文书
《石榴》教学反思
2014/03/02 职场文书
总经理岗位职责
2015/02/04 职场文书
寒假安全保证书
2015/02/28 职场文书
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技