详解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 相关文章推荐
javascript实现的网页局布刷新效果
Dec 01 Javascript
Javascript中arguments用法实例分析
Jun 13 Javascript
javascript获取当前的时间戳的方法汇总
Jul 26 Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 Javascript
JQuery标签页效果的两个实例讲解(4)
Sep 17 Javascript
js实现卡片式项目管理界面UI设计效果
Dec 08 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
原生JS实现小小的音乐播放器
Oct 16 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
Feb 26 Javascript
Vue Router去掉url中默认的锚点#
Aug 01 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
express框架下使用session的方法
Jul 31 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/05/04 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
python如何将两个txt文件内容合并
2019/10/18 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
光盘行动倡议书
2014/02/02 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2016年党建工作简报
2015/11/26 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
golang 实现Location跳转方式
2021/05/02 Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang