详解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 相关文章推荐
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
jquery1.4 教程二 ajax方法的改进
Feb 25 Javascript
IE下js调试工具Companion.JS
Oct 15 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
Mar 19 Javascript
JQuery记住用户名密码实现下次自动登录功能
Apr 27 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
angularjs实现天气预报功能
Jun 16 Javascript
JavaScript 跨域之POST实现方法
May 07 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
Aug 24 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
vue中通过使用$attrs实现组件之间的数据传递功能
Sep 01 Javascript
JavaScript中继承原理与用法实例入门
May 09 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 session劫持和防范的方法
2013/11/12 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
Google韩国首页图标动画效果
2007/08/26 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
深入理解redux之compose的具体应用
2020/01/12 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
python实现rest请求api示例
2014/04/22 Python
python贪吃蛇游戏代码
2020/04/18 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
农业资源与环境专业自荐信范文
2013/12/30 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
新品发布会策划方案
2014/06/08 职场文书
银行授权委托书范本
2014/10/04 职场文书
运动会主持人开幕词
2016/03/04 职场文书
工作一年自我鉴定
2019/06/20 职场文书
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python