详解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.form.js用法之清空form的方法
Mar 07 Javascript
jQuery+css实现百度百科的页面导航效果
Dec 16 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
JS拖拽组件学习使用
Jan 19 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
Mar 05 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
Apr 19 Javascript
js实现登录拖拽窗口
Feb 10 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 Javascript
elementui实现预览图片组件二次封装
Dec 29 Javascript
JavaScript高级程序设计之变量与作用域
Nov 17 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记录日志的实现代码
2011/08/08 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
学习雷锋倡议书
2014/04/15 职场文书
集中整治工作方案
2014/05/01 职场文书
需求分析说明书
2014/05/09 职场文书
反腐倡廉标语
2014/06/24 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
报效祖国演讲稿
2014/09/15 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
信仰观后感
2015/06/03 职场文书
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python