新版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 相关文章推荐
十分钟打造AutoComplete自动完成效果代码
Dec 26 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
JavaScript里四舍五入函数round用法实例
Apr 06 Javascript
ES6中非常实用的新特性介绍
Mar 10 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
利用vueJs实现图片轮播实例代码
Jun 03 Javascript
js实现京东轮播图效果
Jun 30 Javascript
AngularJS实现表单元素值绑定操作示例
Oct 11 Javascript
如何使用JavaScript策略模式校验表单
Apr 29 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入门小知识
2008/03/24 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python函数的万能参数传参详解
2019/07/26 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
PHP面试题大全
2015/10/16 面试题
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang