前后端框架(本例中是vue和koa)如何发送请求?获取响应?

以及跨域问题如何解决?

vue部分:

`import App from` `'./App.vue'`
`import Axios from` `'axios'`
`new` `Vue({`
`el:` `'#app'``,`
`render: h => h(App),`
`mounted(){`
`Axios({`
`method:` `'get'``,`
`url:` `'[http://localhost:3000](http://localhost:3000/)'``,`
`}).then((response) => {`
`console.log(response);`
`})`
`}`
`})`
复制代码

koa部分:

`const Koa = require(``'koa'``);`
`const cors = require(``'koa-cors'``);`
`const app =` `new` `Koa();`
`const main = ctx => {`
`ctx.response.body =` `'Hello World'``;`
`};`
`app.use(cors());`
`app.use(main);`
`app.listen(3000);`
`console.log(``"服务已启动"``);`
复制代码

坑集锦:

1.单纯引入koa框架并且开启服务,会出现跨域错误

`XMLHttpRequest cannot load [http://localhost:3000/.](http://localhost:3000/) No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '[http://localhost:8080](http://localhost:8080/)';; is therefore not allowed access.`
`bundle.js:1200 Uncaught (in promise) Error: Network Error`
`at createError (bundle.js:1200)`
`at XMLHttpRequest.handleError (bundle.js:1046)`
复制代码

2.跨域方案尝试

①引入cors模块(失败,TypeError: res.setHeader is not a function)
`const cors = require(``'cors'``);`
`app.use(cors());`
复制代码

②引入koa-cors模块(成功,解决跨域问题,并正确返回数据)

`const cors = require(``'koa-cors'``);`
`app.use(cors())`
复制代码

|时会在新的http response的头部信息中会新增2个字段。

Access-Control-Allow-Methods:GET,HEAD,PUT,POST,DELETEAccess-Control-Allow-Origin:http://localhost:8080

现在我们来宏观分析一下,跨域失败以及成功的深层次原因是什么?

客户端(http://localhost:8080)

服务端:(http://localhost:3000)

跨域请求失败是谁的原因?
服务器的原因。

为什么这么说?
因为在服务器端引入koa-cors之前,注意,是服务器端,我们的跨域访问失败。
而在服务器引入跨域请求模块koa-cors之后,而客户端没有做任何改变,跨域访问就成功了。
具体来说,就是在返回的请求头里加入了2个跨域请求的字段,上文也给出了详细的HTTP定义。
一个代表支持的请求方法,本例中是get方法。
一个代表允许使用上述方法的域,本例中是http://localhost:8080。

1.那么聪明的你就会问了,koa-cors本质上是一个node模块,这个模块是怎么做到支持跨域访问到呢?
我想koa-cors肯定调用了node模块http,其余模块暂时未知。

2.那么聪明的你又会想到,axios呢,它的内部工作原理是什么?
我想肯定用到了的XMLHttpRequest这个对象,基于XMR对象做了封装,暂且知道这么多。

3.所以说聪明的你会有一个领悟!
node模块不止是能在服务器端调用,在客户端也可以调用。
说清楚一点,就是node模块不止能够封装node.js引擎的api,而且能封装web V8引擎的api。
若是想问原因的话,我想是因为node是基于V8y引擎开发的服务器环境,因此v8 api基本上是通用的,暂时这么理解。
所以说,前端开发模块化编程趋势下,nodejs必须要会,因为二者都是在强大的V8引擎驱动下工作的。
最后说个微观的坑...

下面的代码中,app.use(cors());必须在app.use(main);之前。

`const Koa = require(``'koa'``);`
`const cors = require(``'koa-cors'``);`
`const app =` `new` `Koa();`
`const main = ctx => {`
`ctx.response.body =` `'Hello World'``;`
`};`
`app.use(cors());`
`app.use(main);`
`app.listen(3000);`
`console.log(``"服务已启动"``);`
复制代码

本次给大家推荐一个交流圈,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入:582735936,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解相关推荐

  1. vue如何配置服务器端跨域_客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解...

    本篇博客主要说明: 前后端框架(本例中是vue和koa)如何发送请求?获取响应? 以及跨域问题如何解决? vue部分: import App from './App.vue' import Axios ...

  2. 【GORM框架】ORM介绍、GORM简单连接和高级配置详解

    博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作.目前在学习和分享:数据结构.Go,Java等相关知识. 博主主页: @是瑶瑶子啦 所属专栏: GORM框架学习 近期目标:写好专栏的每一篇文 ...

  3. gps定位服务器文件,通用GPS配置文件 GPS.conf 文件配置详解(转载)

    个教程适应任何带有GPS功能的手机.智能移动定位设备. 在论坛看到关于GPS.conf文件修改的文章后发现这个配置文件可以优化,且给愿意了解配置文件工作原理的朋友讲解文件工作原理. 如果对于教程本身不 ...

  4. Koa框架教程,Koa框架开发指南,Koa框架中文使用手册,Koa框架中文文档

    我的博客:CODE大全:www.codedq.net:业余草:www.xttblog.com:爱分享:www.ndislwf.com或ifxvn.com. Koa -- 基于 Node.js 平台的下 ...

  5. 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-4.跨域且传输数据,并优化后端接口

    技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-4.优化后端接口,前端使用axios实现接口功能 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站 ...

  6. SpringSecurity权限管理框架系列(六)-Spring Security框架自定义配置类详解(二)之authorizeRequests配置详解

    1.预置演示环境 这个演示环境继续沿用 SpringSecurit权限管理框架系列(五)-Spring Security框架自定义配置类详解(一)之formLogin配置详解的环境. 2.自定义配置类 ...

  7. SpringMVC 框架系列之组件概述与配置详解

    在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...

  8. LCS2005客户端配置详解:LCS2005系列之二

    LCS2005客户端配置详解 上篇博文中我们介绍了如何部署LCS2005标准版,今天我们要再进一步,配置好LCS2005的客户端,使用户能够使用LCS提供的即时通讯服务来进行彼此间的信息交流.实验拓扑 ...

  9. 服务器文件共享不同用户互访设置,samba配置_samba文件共享服务配置详解

    摘要 腾兴网为您分享:samba文件共享服务配置详解,之了课堂,央视影音,人人理财,平安证券等软件知识,以及游戏通用窗口化工具,福建省校讯通,净天之命1.71,teamviewer安卓,宝贝听听,手机 ...

  10. 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解

    注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...

最新文章

  1. 互斥量、读写锁长占时分析的利器——valgrind的DRD
  2. 面试官:啥是集群策略啊?
  3. require与include的区别
  4. mysql先删后增并发时出现死锁_MySQL死锁案例分析一(先delete,再insert,导致死锁)...
  5. JMP M16:64
  6. Visual C#中用WMI编写网络应用程序
  7. 视频教程-CCNA趣味实战无线实验视频课程—含PPPOE、ADSL、CABLE等-思科认证
  8. 关于烧写ESP8285核心板的相关事项
  9. 云计算体系结构中soa构建层_云计算架构分为哪几层 云计算具体学什么
  10. 网吧安内线 黑客遥控偷Q币出售牟利
  11. JPA之Specification复杂条件查询
  12. 美国大学计算机科学专业研究生排名,美国大学计算机科学专业研究生排名介绍...
  13. 在线引入 iconfont 特殊图标字体
  14. 流氓软件广告屏蔽大师 处理方式
  15. svg怎么转换成png格式?
  16. 中望CAD的引线标注格式怎么改_没想到啊,原来CAD命令还可以这样学习
  17. 创建一个最简单的VST
  18. java程序员—工作中开发经验总结
  19. 详细前后端分离实现facebook第三方登录的全过程(国内一般都是用Android和ios,并且资料稀少)
  20. 专利申请文件基本要求

热门文章

  1. Atitit 提升语法级别4gl 4.5g 4.9g 5g 目录 1. 语言级别表 1 2. 4.9g实现细节 2 2.1. $dollor前导符 2 2.2. Static变量 2 2.3. S
  2. Atitit 学习记忆理论 教育理论 教学培训 目录 1. 视觉优先理论 1 2. 心理学的“认知负荷理论 2 2.1. 双重编码理论 2 2.2. 艺术化 原理动画 3 2.3. 艾宾浩斯遗忘曲
  3. Atitit 软件项目系统托盘图标解决方案
  4. paip.c3p0 数据库连接池 NullPointerException 的解决...
  5. paip.论程序断点的类型以及设置总结
  6. Julia : 类型别名
  7. 哎呀,人家不小心变油腻了呢
  8. 【心电信号】基于matlab心电信号PTT+HRV+PRV【含Matlab源码 158期】
  9. 【图像重建】基于matlab主成分分析图像压缩重建【含Matlab源码 1173期】
  10. 【图像压缩】基于matlab GUI DCT图像压缩(压缩率可调)【含Matlab源码 1049期】