详解Vue 开发模式下跨域问题


Posted in Javascript onJune 06, 2017

设置请求头部

  1. 后端设置请求头部Access-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: www.xxx.com
  2. 前端post请求设置withCredentials=true
  3. 这里用了axios的请求数据方法代码如下:
import axios from 'axios'
import config from '../config'
export default {
request (method, uri, data, headerConfig = {withCredentials: true}) {
if (!method) {
 console.error('API function call requires method argument')
 return
}

if (!uri) {
 console.error('API function call requires uri argument')
 return
}

let url = config.serverURI + uri

return axios({ method, url, data, ...headerConfig })
}
}

jQuery的$.ajax::

$.ajax({
type: "POST",
url: "http://www.xxx.com/api.php",
dataType: 'json',
xhrFields: {
  withCredentials: true
},
crossDomain: true
}).then((json) => {
// balabala...
})

使用nodejs做代理

  1. 上面的那种方法需要后端配合设置头部,对于我这种前端小白来讲,联调时各种不成功的报错也无从解决,所以个人比较倾向于下面这种做法,鉴于使用脚手架vue-cli创建的项目,作者已经给我提供好了解决的方法。
  2. 找到项目文件夹下的config/index.js, 里面有一行proxyTable: {}, 这里就是作者为我们留的接口, 我们添加代理规则进去
var path = require('path')
module.exports = {
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../xxx/index.html'),
assetsRoot: path.resolve(__dirname, '../xxx'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
productionGzip: false,
productionGzipExtensions: ['js', 'css']
},
dev: {
env: require('./dev.env'),
port: 8080,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
 '/api': {
  target: 'http://www.xxx.com/api.php/',
  changeOrigin: true,
  pathRewrite: {
   '^/api': '/'
  }
 }
},
cssSourceMap: false
}
}

这里target为目标域名,pathRewrite为转换规则,请求数据时将接口地址 根据转换规则请求就可以解决跨域啦!(这里也可以配置headers,设置cookis,token等)

jsonp

jsonp也是一种解决跨域的方法,不过我从来没有用过,在网上查了下资料,jsonp的原理是script标签引入js是不受域名限制的, 由于是模拟插入script标签, 所以不可以用post请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
鼠标经过的文本框textbox变色
May 21 Javascript
js事件冒泡实例分享(已测试)
Apr 23 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
Sep 12 Javascript
D3.js实现雷达图的方法详解
Sep 22 Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 Javascript
Vue.js对象转换实例
Jun 07 Javascript
js微信应用场景之微信音乐相册案例分享
Aug 11 Javascript
Angularjs实现上传图片预览功能
Sep 01 Javascript
vue引入ueditor及node后台配置详解
Jan 03 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
js仿淘宝放大镜效果
Dec 28 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 #Javascript
深入理解vue-loader如何使用
Jun 06 #Javascript
利用webstrom调试Vue.js单页面程序的方法教程
Jun 06 #Javascript
JavaScript实现一个空中避难的小游戏
Jun 06 #Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 #Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 #Javascript
JavaScript实现移动端轮播效果
Jun 06 #Javascript
You might like
php 进度条实现代码
2009/03/10 PHP
最新的php 文件上传模型,支持多文件上传
2009/08/13 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
jQuery图片轮播的具体实现
2013/09/11 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
mac系统安装Python3初体验
2018/01/02 Python
python得到windows自启动列表的方法
2018/10/14 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
物流专业毕业生推荐信范文
2013/11/18 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
办理居住证介绍信
2014/01/15 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
2015初中团委工作总结
2015/07/28 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL