新版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 相关文章推荐
新鲜出炉的js tips提示效果
Apr 03 Javascript
jQuery实现统计复选框选中数量
Nov 24 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
一次围绕setTimeout的前端面试经验分享
Jun 15 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
使用百度地图实现地图网格的示例
Feb 06 Javascript
详解Angular系列之变化检测(Change Detection)
Feb 26 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
Vue实现简易计算器
Feb 25 Javascript
swiper实现导航滚动效果
Dec 13 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
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
python获取多线程及子线程的返回值
2017/11/15 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python 3 判断2个字典相同
2019/08/06 Python
Python使用贪婪算法解决问题
2019/10/22 Python
如何卸载python插件
2020/07/08 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
艺术设计专业毕业生推荐信
2014/07/08 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
Redis 常见使用场景
2021/08/30 Redis