详解VueJs前后端分离跨域问题


Posted in Javascript onMay 24, 2017

使用vue-cli搭建的vue项目

可以使用在项目内设置代理(proxyTable)的方式来解决跨域问题

设置配置项的目录在config下的index.js,主要通过配置proxyTable项,设置代理指向你的后台地址

dev: {
  env: require('./dev.env'),
  port: 8085,
  autoOpenBrowser: true,
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',
  proxyTable: {
   '/agent': {
    target: 'http://127.0.0.1:7105/',
    changeOrigin: true,
    pathRewrite: {
     '^/agent': ''
    }
   }
  },
  // CSS Sourcemaps off by default because relative paths are "buggy"
  // with this option, according to the CSS-Loader README
  // (https://github.com/webpack/css-loader#sourcemaps)
  // In our experience, they generally work as expected,
  // just be aware of this issue when enabling this option.
  cssSourceMap: false
 }

前端使用vue-resource来发起请求时

//在main.js中设置公用的地址
Vue.prototype.rootUrl = '/agent/';

//在具体page中发起请求的方式
that.$http.post(this.rootUrl + 'login', parms).then(function (response) {
     // 响应成功回调
     console.log(response);
    }, function (response) {
     // 响应错误回调
    });

其他方式搭建的前端项目,通过使用nginx启动前端服务同时配置代理

下列是我的nginx配置文件,不管是通过什么方式搭建的前端项目,构建成功后都会输出一个dist文件,我们只需要将nginx服务目录指向你的dist文件下你项目的入口文件即可

我的文件目录是 root D:\openplatform\portal\webapp\dist; 更改此条配置到你的目录 我入口文件名称是index.html 使用的是vue-cli打包的项目,参考vue-cli npm run build的dist目录,指向那个目录下

#user nobody;
worker_processes 4;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid    logs/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include    mime.types;
  default_type application/octet-stream;

  #log_format main '$remote_addr - $remote_user [$time_local] "$request" "$status" $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio" $request_time $bytes_sent $request_length';

  log_format main '[$time_iso8601] [$remote_addr] [$request] [$http_user_agent] [$cookie_customerID_cookie_flag] [$args]';

  access_log logs/access.log main;

  sendfile    on;
  #tcp_nopush   on;

  #keepalive_timeout 0;
  keepalive_timeout 65;

  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 3;
  gzip_proxied any;
  gzip_types *;

  server {
    listen     80;
    root D:\openplatform\portal\webapp\dist;
    index index.html;

    location / {
       try_files $uri $uri/ @router;
       index index.html;
      }
  location @router {
       rewrite ^.*$ /index.html last;
    }
  location ^~/agent/ {
      proxy_pass  http://127.0.0.1:7105/;
      proxy_redirect  http://127.0.0.1:7105/ /;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 600s;
      proxy_read_timeout 600s;
      proxy_send_timeout 600s;
    }
  }


  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}


  # HTTPS server
  #
  #server {
  #  listen    443 ssl;
  #  server_name localhost;

  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;

  #  ssl_session_cache  shared:SSL:1m;
  #  ssl_session_timeout 5m;

  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers on;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}
}

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

Javascript 相关文章推荐
javascript 兼容鼠标滚轮事件
Apr 07 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
Jan 31 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
jQuery预加载图片常用方法
Jun 15 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
jQuery each函数源码分析
May 25 Javascript
jQuery实现 上升、下降、删除、添加一行代码
Mar 06 Javascript
微信小程序tabBar用法实例详解
Dec 04 Javascript
jQuery实现小火箭返回顶部特效
Feb 03 jQuery
微信小程序实现列表的横向滑动方式
Jul 15 Javascript
vue 页面跳转的实现方式
Jan 12 Vue.js
angular.js指令中transclude选项及ng-transclude指令详解
May 24 #Javascript
angular directive的简单使用总结
May 24 #Javascript
深入理解JavaScript 参数按值传递
May 24 #Javascript
详解Angular 4.x NgTemplateOutlet
May 24 #Javascript
javascript简单写的判断电话号码实例
May 24 #Javascript
Angular2搜索和重置按钮过场动画
May 24 #Javascript
深入理解react-router@4.0 使用和源码解析
May 23 #Javascript
You might like
PHP 各种排序算法实现代码
2009/08/20 PHP
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Python open()文件处理使用介绍
2014/11/30 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
Python3的socket使用方法详解
2020/02/18 Python
python实现扫雷小游戏
2020/04/24 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
先进教师事迹材料
2014/12/16 职场文书
2015年领班工作总结
2015/04/29 职场文书
学校运动会开幕词
2016/03/03 职场文书