详解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 相关文章推荐
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
Apr 06 Javascript
javascript查询字符串参数的方法
Jan 28 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 Javascript
bootstrap模态框远程示例代码分享
May 22 Javascript
使用Vue构建可重用的分页组件
Mar 26 Javascript
ES6与CommonJS中的模块处理的区别
Jun 13 Javascript
解决百度Echarts图表坐标轴越界的方法
Oct 17 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
Nov 26 Javascript
详解微信小程序自定义组件的实现及数据交互
Jul 22 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 广告调用类代码(支持Flash调用)
2011/08/11 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
wxPython事件驱动实例详解
2014/09/28 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python实现字符串加密成纯数字
2019/03/19 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python中p-value的实现方式
2019/12/16 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
企业文化演讲稿
2014/05/20 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2014年督导工作总结
2014/11/19 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
详解nginx进程锁的实现
2021/06/14 Servers