博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新版vue-cli模板下本地开发环境使用node服务器跨域
阅读量:6197 次
发布时间:2019-06-21

本文共 1333 字,大约阅读时间需要 4 分钟。

背景

我们都知道浏览器有一个既核心也最基本的安全功能,即同源策略。同源分别是:协议,域名,端口。如果浏览器访问服务器不同源的话,就会访问不到数据。那开发中常常访问的服务器不同源,那么可以借助一个服务器当做中介来访问需要访问的服务器从而获得数据。因为同源策略是浏览器的安全机制,而服务器之间是不受此限制的。

之前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)}复制代码
  1. 在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)    })}复制代码

请求到数据如下:

结语

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

转载地址:http://hfica.baihongyu.com/

你可能感兴趣的文章
bs4的简单应用之防止xss攻击和文本截断
查看>>
数据库的学习
查看>>
Android -- 仿小红书欢迎界面
查看>>
js在前端获取在本地上传图片的尺寸
查看>>
mysql数据库性能调优总结积累
查看>>
jmeter命令行运行-分布式测试
查看>>
day25 面向对象引子
查看>>
爬虫,基于request,bs4 的简单实例整合
查看>>
mysql的安装
查看>>
使用shell脚本生成数据库markdown文档
查看>>
PyQt5:布局
查看>>
指针常量,常量指针
查看>>
C#程序运行计时
查看>>
Android init.rc执行顺序
查看>>
如何通过 Vue+Webpack 来做通用的前端组件化架构设计
查看>>
通过javascript的日期对象来得到当前的日期
查看>>
重装系统
查看>>
VS2008切换时卡死解决方法
查看>>
Mysql之sql语句操作
查看>>
查看Sql Server 数据库的内存使用情况
查看>>