新版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 日历提醒系统( 兼容所有浏览器 )
Apr 07 Javascript
javascript 设置某DIV区域内的checkbox复选框
Nov 30 Javascript
有效提高JavaScript执行效率的几点知识
Jan 31 Javascript
javascript中的正则表达式使用指南
Mar 01 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
全面了解JS中的匿名函数
Jun 29 Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
Node.js搭建WEB服务器的示例代码
Aug 15 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 Javascript
vue 遮罩层阻止默认滚动事件操作
Jul 28 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
Nov 30 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
简单说下OSPF的操作过程
2014/08/13 面试题
2014年幼儿园元旦活动方案
2014/02/13 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
工程承包协议书范本
2014/09/29 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis