在vue-cli 项目中很多人会用到mock 数据(模拟数据),但是我觉得如果在真实的数据库交互中开发会更有安全感一些,所以查了一下百度很多人推荐的就是:

  跨域!

 跨域是什么概念?不同的主机名,同主机名不同端口号.....这些都是跨域,可以看看这篇文章http://www.qdfuns.com/notes/17659/bb090a096034a8074332a5060e9b6a3c.html

   因为启动vue-cli nodejs 会为我们创建一个服务器,一台电脑的端口号又不可以重复所以便唯有跨域才能获取数据,这里我只介绍在开发环境中进行跨域而在生产环境不需要跨域的情况。这需要前后端的配合

  

  首先,前端方面:

  官方文档介绍了 vue-cli 项目中 config 文件夹下有一个index.js,这个js 文件配置了一些关于打包后生成的文件配置以及开发环境中的文件配置,其中proxyTable 这个属性项是我们要配置的

  如图:

  

  官方标准配置代码为:

  

'/api': {
// 要请求的服务器地址
target: 'http://jsonplaceholder.typicode.com',
changeOrigin: true,
pathRewrite: {
// 将目标的服务器地址 替换为如下的地址
// 这里会将 http://jsonplaceholder.typicode.com 替换为
// /api 所以发送后台请求的地址就变成 /api/xxx.php 之类的格式了
'^/api': ''
}
}

而我的的配置是这样的:

'/yourdaily': {
target: 'http://localhost/yourdaily/php',
changeOrigin: true,
pathRewrite: {
'^/yourdaily/php': ''
}
}

键值显得有些别有用心,因为我的后台文件结构是这样的:

项目文件夹下有一个php 的文件夹保存着api 模块,当我将项目打包(图中的static以及 index.html  文件就是打包后的文件)引入到服务器中我就再也无须修改我的后台接口地址了,因为在开发状态中请求的地址我直接就可以写成 ‘/yourdaily/php’,这个和打包后发送的后台地址是一模一样的。有些取巧。

ok,下面是后端方面的:

·php 文件要设置头部

header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');

因为php 并没有系统学习所以这些头部也只是网上看一遍理解一下便粘贴下来了,如果不设置头部请求会报错,原因是php 的头部没有设置   Access-Control-Allow-Origin

而跨域中ajax 请求是禁止post 请求的 所以也要加上  Access-Control-Allow-Methods:POST 这一句

// -------------------  修改于2017-09-06 ------------------------------------

对于上面说的跨域ajax 请求是禁止post请求的说法今天终于搞清楚了,其实ajax 请求时get 和 post 请求都不能被接收原因是遵循了限制跨域读的原则

而想跨域ajax 请求则只需在后台的脚本中加上  header('Access-Control-Allow-Origin:*') 这一句也是ok 的

参考文章地址:http://www.cnblogs.com/davidwang456/p/3977627.html

而今天在自己的项目里面遇到了一个新问题,vue-resource 跨域post请求传递不了参数的问题。

vue-resource 的参数值设置是这样的:

this.$http.post('/yourdaily/php/register/check.php', {
arg1: someArg,
arg2: anotherArg }).then(res => {
// do something....
});

但是这样的提交 参数只会当成一个json 数据去提交给后台,查看xhr 的信息时显示这样:

于是在这篇博客中找到了答案:

http://blog.csdn.net/guxiansheng1991/article/details/66969121

而官方文档也给出了答案,只怪自己没有留意

通过设置这个参数便可以将post 请求的参数按照表单的方式传递给后台了

这个选项的方式如下

this.$http.post('/yourdaily/php/register/check.php', {
arg1: someArg,
arg2: anoterArg
}, {emulateJSON: true}).then(res => {
// do something
});

这样便解决了~

【笔记】vue-cli 开发环境中跨域连接后台api(vue-resource 跨域post 请求)的更多相关文章

  1. vue cli+axios踩坑记录+拦截器使用,代理跨域proxy(更新)

    16319 1.首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点建议方式 在main.js中如下声明使用 import axios from 'ax ...

  2. vue cli+axios踩坑记录+拦截器使用,代理跨域proxy

    1.首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点 建议方式 在main.js中如下声明使用 import axios from 'axios'; ...

  3. Vue学习笔记(五)——配置开发环境及初建项目

    前言 在上一篇中,我们通过初步的认识,简单了解 Vue 生命周期的八个阶段,以及可以应用在之后的开发中,针对不同的阶段的钩子采取不同的操作,更好的实现我们的业务代码,处理更加复杂的业务逻辑. 而在这一 ...

  4. Mac安装vue.js开发环境

    Mac安装vue.js开发环境 DannyHooDanny的专栏订阅 一.vue.js开发环境 二.初始化一个vue.js项目 三.vue.js项目打包部署 本来以为在Mac上搭建vue.js的环境挺 ...

  5. windows下vue.js开发环境搭建教程

    这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中 ...

  6. Hadoop学习笔记(4) ——搭建开发环境及编写Hello World

    Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...

  7. vue的开发环境搭建命令加图解

    vue的开发环境的搭建 不管什么软件我们都要去官网下载安装,这是作为专业程序员的安全意识. 1.安装node.js 官方下载的页面:点击这里 大约展示的页面是这样子的!我们演示是windows 64位 ...

  8. 前端开发 Vue -1windows环境搭建Vue Node开发环境

    解决几个疑问: 想学习下vue.js,我理解的它是一个前端的框架,主要作用是对数据的处理,和juqery类似,所以不太理解为什么要在nodejs中npm install vue呢?在html文件中引入 ...

  9. 二、Electron + Webpack + Vue 搭建开发环境及打包安装

    目录 Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程 Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程 Electron + ...

随机推荐

  1. 解决ios手机上传竖拍照片旋转90度问题

    html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

  2. Java工程读取resources中资源文件路径问题

    正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径.在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例. 本地读取资 ...

  3. HTML编码规范、CSS编码规范

    HTML编码规范 IE 兼容模式 IE 支持通过特定的 标签来确定绘制当前页面所应该采用的 IE 版本.除非有强烈的特殊需求,否则最好是设置为 edge mode,从而通知 IE 采用其所支持的最新的 ...

  4. php echo和print_r和var_dump的区别

    echo -- 适合打印单数据 整型 字符串 浮点型 print_r -- 适合打印符合数据 数组 资源 对象 var_dump -- 适合调试变量打印特许的类型 如BOOL NULL 不仅能把值打印 ...

  5. android应用开发基础知道

    1.理解android linux是由c语言和汇编语言写的操作系统,android是基于linux内核的操作系统.发者可以使用Java或C/C++开发Android应用. 2.android环境搭建 ...

  6. 强化学习之Sarsa (时间差分学习)

    上篇文章讲到Q-learning, Sarsa与Q-learning的在决策上是完全相同的,不同之处在于学习的方式上 这次我们用openai gym的Taxi来做演示 Taxi是一个出租车的游戏,把顾 ...

  7. 深度解剖dubbo源码

    -----------学习dubbo源码,能给你带来什么好处?----------- 1.提升SOA的微服务架构设计能力   通过读dubbo源码是一条非常不错的通往SOA架构设计之路,毕竟SOA的服 ...

  8. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)

    前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)>,我们完成了: * 引用SqlSugar * ...

  9. Gym 101612C Consonant Fencity

    原题传送门 题意:给定一个只含小写字母的字符串,假设aeiouyw为元音字母,现在要把一些字母变为大写,要求相同字母的大小写必须相同,统计变化后的字符串中有多少对相邻.同为辅音字母且大小写不一样的字符 ...

  10. Codeforces Round #404 (Div. 2)(A.水,暴力,B,排序,贪心)

    A. Anton and Polyhedrons time limit per test:2 seconds memory limit per test:256 megabytes input:sta ...